Maison > Questions et réponses > le corps du texte
double s = 5.3;
double s1 = 4.2;
System.out.println(s-s1);
输出1.0999999999999996
阿神2017-04-17 17:48:37
L'essence des types float et double dans les types de données de base de Java sont des nombres à virgule flottante. Les nombres à virgule flottante ne peuvent pas stocker de données précises. Dans ce cas, lorsque des nombres à virgule flottante sont calculés, le résultat du calcul ne sera pas une valeur précise ;
Par conséquent, Java fournit une classe BigDecimal
Si vous avez besoin d'effectuer des opérations de données précises (comme le montant), vous pouvez utiliser cette classe, ce qu'on appelle la courbe pour sauver le pays...
Concernant la mise en œuvre et les principes sous-jacents des nombres à virgule flottante, cela est souvent abordé dans des cours tels que 计算机原理
Vous pouvez rechercher des informations pertinentes par vous-même...
迷茫2017-04-17 17:48:37
Utiliser BigDecimal en Java pour un calcul précis de nombres à virgule flottante
巴扎黑2017-04-17 17:48:37
Merci pour l'invitation ! Je ne peux pas expliquer pourquoi la précision est perdue, mais je sais comment la résoudre. Il est recommandé de convertir les types doubles et autres en String avant le calcul, puis de les placer dans java.math.BigDecimal pour le calcul. . math.BigDecimal est livré avec ses propres méthodes de fonctionnement, telles que add() et pide(). . Attendez, un objet BigDecimal sera renvoyé après le calcul, puis converti en types de données de base à l'aide de doubleValue(), intValue() et d'autres méthodes.
迷茫2017-04-17 17:48:37
Merci pour l'invitation, vous pouvez vous référer à cet article pour cette questionhttps://zm8.sm-tc.cn/?src=http://z...
伊谢尔伦2017-04-17 17:48:37
Parce que l'arithmétique informatique est binaire.
La conversion de 0,1 en décimal en binaire est un décimal infiniment récurrent et doit être tronqué.
Pour l'addition et la soustraction de devises décimales, vous pouvez utiliser le type BigDecimal (appelé Decimal dans certaines langues) pour éviter les erreurs de troncature.
Vous pouvez également définir vous-même une classe numérique, comme le fait Matlab.
L'erreur et l'erreur sont deux choses différentes. La différence à la fin n'a pas d'importance dans la plupart des cas.
Par exemple : utilisez des nombres à virgule flottante double précision pour calculer la circonférence de la Terre. L'erreur de troncature est de l'ordre de 0,000001 millimètres.