
在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减少浮点错误。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)