加减双打给出奇怪的结果

加减双打给出奇怪的结果,第1张

加减双打给出奇怪的结果

在Java中,

double
值是IEEE浮点数。除非它们是2的幂(或2的幂的和,例如1/8
+ 1/4 =
3/8),否则即使它们具有很高的精度,也无法准确表示它们。一些浮点运算会加重这些浮点数中存在的舍入误差。在上述情况下,浮点错误已变得足够重要,可以显示在输出中。

无论是从a解析字符串

JTextField
还是指定
double
文字,数字的来源都无关紧要-问题是浮点表示形式的继承。

解决方法:

  • 如果知道只有这么多小数点,请使用整数算术,然后转换为小数:

    (double) (51 + 1) / 10

    (double) (48 - 4) / 10

  • 使用BigDecimal

  • 如果必须使用

    double
    ,则可以使用Kahan Summation Algorithm减少浮点错误



欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5176860.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-11-18
下一篇2022-11-18

发表评论

登录后才能评论

评论列表(0条)

    保存