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!