Maison > Java > javaDidacticiel > le corps du texte

Pourquoi la conversion d'un float en double semble-t-elle augmenter la précision ?

Susan Sarandon
Libérer: 2024-11-03 06:03:02
original
399 Les gens l'ont consulté

Why Does Converting a Float to a Double Seem to Increase Precision?

Préserver la précision numérique : convertir le flottant en double

Lorsque vous travaillez avec des types de données primitifs, il est crucial d'assurer la précision. La conversion d'un float en double peut parfois introduire des erreurs d'arrondi involontaires. La conversion directe d'un float en double peut donner une précision supplémentaire inattendue, comme le démontre l'exemple :

float temp = 14009.35F;
System.out.println(Float.toString(temp)); // Prints 14009.35
System.out.println(Double.toString((double) temp)); // Prints 14009.349609375
Copier après la connexion

Cette précision "supplémentaire" apparente n'est pas réellement obtenue lors de la conversion. Au lieu de cela, le flotteur ne représentait pas avec précision le nombre prévu. Le double, en revanche, reflète avec précision la valeur du flotteur d'origine. Une fois converti en chaîne, le double révèle les données « cachées » qui étaient présentes dans le flottant.

Considérez cet exemple :

float f = 0.1F;
double d = f;
Copier après la connexion

La valeur de f pourrait être exactement 0,100000234523. d possédera la même valeur, mais une fois converti en chaîne, il apparaîtra avec une plus grande précision, affichant les chiffres "supplémentaires" qui existaient déjà.

La conversion en chaîne et inversement entraîne une double valeur plus proche à la représentation sous forme de chaîne que le flottant d'origine. Cependant, cela n'est avantageux que si la valeur de la chaîne représente réellement le nombre souhaité.

Il convient de se demander si BigDecimal serait un type de données plus approprié pour ce scénario. BigDecimal est spécialement conçu pour des valeurs décimales précises, garantissant que vous travaillez avec la représentation exacte dont vous avez besoin.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal