Maison  >  Article  >  Java  >  Pourquoi la conversion d'un flotteur en double perd-elle en précision et comment puis-je maintenir la précision ?

Pourquoi la conversion d'un flotteur en double perd-elle en précision et comment puis-je maintenir la précision ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-02 21:20:02908parcourir

Why Does Converting a Float to Double Lose Precision, and How Can I Maintain Accuracy?

Maintenir la précision lors de la conversion d'un flottant en double

Lors de la conversion d'un flottant primitif en un double primitif, vous pouvez rencontrer des écarts de précision en raison de nature inhérente de l’arithmétique à virgule flottante. Le simple fait de convertir le float en double peut entraîner des erreurs d'arrondi indésirables, comme le démontre le code fourni :

<code class="java">float temp = 14009.35F;
System.out.println(Float.toString(temp)); // Prints 14009.35
System.out.println(Double.toString((double)temp)); // Prints 14009.349609375</code>

Cependant, convertir le float en chaîne, puis l'analyser en tant que double produit la précision souhaitée :

<code class="java">System.out.println(Double.toString(Double.parseDouble(Float.toString(temp))));
// Prints 14009.35</code>

Il est important de noter que la précision apparemment supplémentaire dans le lancer direct du flotteur au double n'est pas un réel gain de précision. La double représentation reflète fidèlement la précision inhérente de la valeur flottante. La conversion en chaîne et inversement simplifie la représentation, ce qui donne une valeur double plus proche de la représentation sous forme de chaîne que du float d'origine.

Avant de vous fier à cette solution de contournement, réfléchissez à l'opportunité d'utiliser les types de données float et double. Si des valeurs décimales précises sont cruciales, comme dans les applications financières ou scientifiques, BigDecimal est recommandé comme type plus approprié, car il offre une plus grande précision et un plus grand contrôle sur les calculs décimaux.

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