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