Maison >Java >javaDidacticiel >Comment puis-je déplacer avec précision les décimales dans un double Java ?

Comment puis-je déplacer avec précision les décimales dans un double Java ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-26 04:00:13988parcourir

How Can I Accurately Move Decimal Places in a Java Double?

Déplacer les décimales dans un double

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. .

Atteindre la précision

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.

Précision dans Arithmétique à virgule flottante

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.

Différences d'arrondi

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn