Participer au site avec un Tip
Rechercher
 

Améliorations / Corrections

Vous avez des améliorations (ou des corrections) à proposer pour ce document : je vous remerçie par avance de m'en faire part, cela m'aide à améliorer le site.

Emplacement :

Description des améliorations :

Module : java.base - Package : java.lang
Version documentée : Java SE 17

Classe « StrictMath »

Informations générales

Héritage

java.lang.Object
    java.lang.StrictMath

Définition

public final class StrictMath extends java.lang.Object

Description

Cette classe propose, sous forme de méthodes statiques, les fonctions mathématiques usuelles telles que les fonctions trigonométriques, exponentielles, logarithmiques et autres.

les fonctions de la classe Math utilisent des primitives à virgules flottantes proposées par le processeur de la machine sur laquelle s'exécute le programme. Cela permet de garantir des performances accrues. Le contre-coup étant, qu'entre deux machines distinctes, les résultats calculés peuvent être sensiblement différents : c'est notamment le cas pour les fonctions trigonométriques.

Si vous souhaitez obtenir des résultats plus strictes et totalement prévisibles, ce quelle que soit la plateforme considérée et quitte à être moins performant, il faut plutôt utiliser la classe StrictMath. Cette dernière implémente les algorithmes provenant de la bibliothèque mathématique Freely Distributable Math Library" (aussi appelée FdLibm).

Exemple de code

 1 
 2 
 3 
 4 
 5 
 6 
 7 
 8 
 9 
 10 
 11 
 12 
 13 
 14 
 15 
 16 
 17 
 18 
 19 
 20 
 21 
 22 
 23 
 24 
 25 
 26 
 27 
 28 
 29 
 30 
 31 
 32 
 33 
 34 
 35 
 36 
 37 
 38 
 39 
 40 
 41 
 42 
 43 
 44 
 45 
 46 
 47 
 48 
 49 
 50 
/**
 * La classe Vector représente un vecteur dans un espace à 3 dimensions.
 */
public class Vector {
    private double x;
    private double y;
    private double z;
    
    /**
     * Méthode de normalisation du vecteur courant.
     */
    public void normalize() {
        // On calcule la norme du vecteur v1
        double norm = StrictMath.sqrt( StrictMath.pow( this.x, 2 ) + 
                                       StrictMath.pow( this.y, 2 ) +
                                       StrictMath.pow( this.z, 2 ) );
        System.out.println( "norm == " + norm );
        
        // On normalise le vecteur v1
        this.x /= norm;
        this.y /= norm;
        this.z /= norm;
    }
    
    /**
     * Méthode d'affichage du vecteur courant.
     */
    @Override public String toString() {
        return String.format( "[%f,%f,%f]", this.x, this.y, this.z );
    }
    
    public static void main( String[] args ) {

        // On génère un vecteur aléatoirement
        Vector v1 = new Vector();
        v1.x = ( StrictMath.random() * 10 ) - 5;   // -5 <= x < 5
        v1.y = ( StrictMath.random() * 10 ) - 5;   // -5 <= y < 5
        v1.z = ( StrictMath.random() * 10 ) - 5;   // -5 <= z < 5
        
        // On l'affiche
        System.out.println( v1 );
        
        // On le normalise
        v1.normalize();
        
        // On l'affiche une fois normalisé
        System.out.println( v1 );
    }

}
Exemple d'utilisation de la classe StrictMath

Et voici les résultats produits par cet exemple de code.

[-1,728644,-2,141001,-0,470752]
norm == 2.791720850312077
[-0,619204,-0,766911,-0,168624]>

Disponible depuis

1.3

Voir aussi

La classe Math

Liste des attributs

Tous les attributs Attributs d'instance Attributs statiques Attributs dépréciés
QualificateursTypeNomDescription
public static double E
public static double PI

Liste des constructeurs

Constructeurs Constructeurs dépréciés
ConstructeurDescription

Liste des propriétés (getters/setters)

Propriétés Propriétés dépréciées
QualificateursTypeNomR/W

Propriétés héritées de la classe java.lang.Object

class

Liste des méthodes

Toutes les méthodes Méthodes d'instance Méthodes statiques Méthodes concrètes Méthodes abstraites Méthodes dépréciées
QualificateursType de retourPrototype de la méthodeDescription
public static int abs( int a )
public static double abs( double a )
public static long abs( long a )
public static float abs( float a )
public static int absExact( int a )
public static long absExact( long a )
public static native double acos( double value ) Cette méthode implémente la fonction trigonométrique de calcul de l'arc cosinus de la valeur passée en paramètre.
public static int addExact( int x, int y )
public static long addExact( long x, long y )
public static native double asin( double value ) Cette méthode implémente la fonction trigonométrique de calcul l'arc sinus de la valeur passée en paramètre.
public static native double atan( double value ) Cette méthode implémente la fonction trigonométrique de calcul de l'arc tangente d'une valeur.
public static native double atan2( double y, double x ) Cette méthode permet de calculer l'arc tangente de y/x (ou x et y représentent les coordonnées d'un point dans le plan).
public static double cbrt( double value ) Cette méthode permet de calculer la racine cubique d'une valeur.
public static double ceil( double value ) Cette méthode calcule l'arrondi entier supérieur (ceil signifiant plafond) de la valeur spécifiée en paramètre.
public static float copySign( float magnitude, float sign )
public static double copySign( double magnitude, double sign )
public static native double cos( double angle ) Cette méthode implémente la fonction trigonométrique de calcul du cosinus d'un angle exprimé en radians.
public static native double cosh( double x )
public static int decrementExact( int a )
public static long decrementExact( long a )
public static double exp( double a )
public static native double expm1( double x )
public static double floor( double value ) Cette méthode calcule l'arrondi entier inférieur (floor signifiant plancher) de la valeur spécifiée en paramètre.
public static long floorDiv( long x, long y )
public static long floorDiv( long x, int y )
public static int floorDiv( int x, int y )
public static int floorMod( long x, int y )
public static long floorMod( long x, long y )
public static int floorMod( int x, int y )
public static double fma( double a, double b, double c )
public static float fma( float a, float b, float c )
public static int getExponent( float f )
public static int getExponent( double d )
public static double hypot( double x, double y )
public static native double IEEEremainder( double f1, double f2 )
public static int incrementExact( int a )
public static long incrementExact( long a )
public static native double log( double a )
public static native double log10( double a )
public static native double log1p( double x )
public static int max( int a, int b )
public static float max( float a, float b )
public static long max( long a, long b )
public static double max( double a, double b )
public static long min( long a, long b )
public static float min( float a, float b )
public static int min( int a, int b )
public static double min( double a, double b )
public static long multiplyExact( long x, int y )
public static long multiplyExact( long x, long y )
public static int multiplyExact( int x, int y )
public static long multiplyFull( int x, int y )
public static long multiplyHigh( long x, long y )
public static long negateExact( long a )
public static int negateExact( int a )
public static double nextAfter( double start, double direction )
public static float nextAfter( float start, double direction )
public static double nextDown( double d )
public static float nextDown( float f )
public static double nextUp( double d )
public static float nextUp( float f )
public static double pow( double value, double power ) Cette méthode permet de calculer une valeur élevée à une puissance donnée (valuepower).
public static double random() Cette méthode renvoie une valeur pseudo-aléatoire, typée double, supérieure ou égale à 0 et strictement inférieure à 1.
public static double rint( double a )
public static long round( double value ) Cette méthode renvoie l'arrondi entier au plus proche de la valeur spécifiée en paramètre.
public static int round( float a )
public static float scalb( float f, int scaleFactor )
public static double scalb( double d, int scaleFactor )
public static double signum( double d )
public static float signum( float f )
public static native double sin( double angle ) Cette méthode implémente la fonction trigonométrique de calcul du sinus d'un angle exprimé en radians.
public static native double sinh( double x )
public static native double sqrt( double value ) Cette méthode permet de calculer la racine carré d'une valeur passée en paramètre.
public static int subtractExact( int x, int y )
public static long subtractExact( long x, long y )
public static native double tan( double angle ) Cette méthode implémente la fonction trigonométrique de calcul de la tangente d'un angle exprimé en radians.
public static native double tanh( double x )
public static double toDegrees( double angrad )
public static int toIntExact( long value )
public static double toRadians( double angdeg )
public static double ulp( double d )
public static float ulp( float f )

Méthodes héritées de la classe java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait