Lorsqu'il s'agit de nombres à virgule flottante, représenter avec précision les nombres devient souvent un défi. Les doubles, en particulier, ont leurs limites pour représenter avec précision les nombres décimaux.
Considérez un scénario dans lequel vous avez un double ensemble à 1234 et essayez de déplacer une décimale de deux fois pour obtenir 12,34. Une approche courante consiste à multiplier deux fois 1 234 par 0,1, comme le montre l'extrait de code fourni :
double x = 1234; for(int i=1;i<=2;i++) { x = x*.1; } System.out.println(x);
Cependant, cette méthode introduit des erreurs d'arrondi, ce qui donne une valeur de « 12,340000000000002 », comme le montre le résultat. .
Pour être précis stocker la valeur de 12,34, il est indispensable d'éviter d'utiliser 0,1 dans la multiplication. Envisagez plutôt d'utiliser 100, qui peut être représenté avec précision par un double :
double x = 1234; x /= 100; System.out.println(x);
Cette approche modifiée déplace effectivement la décimale deux fois, ce qui donne la valeur souhaitée de 12,34.
La double précision a ses limites, donc même sans arrondi explicite, certaines erreurs d'arrondi sont inévitables. Pour des opérations plus précises, il est recommandé d'envisager d'utiliser BigDecimal, qui fournit une représentation décimale plus précise.
Lorsqu'il s'agit d'arrondi, il est important de noter que diviser par 100 et multiplier par 0,01 donnent des résultats légèrement différents en raison de l'erreur d'arrondi fixe associée à 0,01.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!