Java中double相减为什么会出现不精确的现象?
高洛峰
高洛峰 2017-04-17 17:46:37
0
5
831

double s = 5.3;
double s1 = 4.2;
System.out.println(s-s1);
输出1.0999999999999996

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

répondre à tous(5)
阿神

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

.
迷茫

Utiliser BigDecimal en Java pour un calcul précis de nombres à virgule flottante

巴扎黑

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.

迷茫

Merci pour l'invitation, vous pouvez vous référer à cet article pour cette questionhttps://zm8.sm-tc.cn/?src=http://z...

伊谢尔伦

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.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal