Java中的双精度模数

Java中的双精度模数,第1张

Java中的双精度模数

如果需要精确的结果,请使用精确的类型

    double val = 3.9 - (3.9 % 0.1);    System.out.println(val); // 3.8000000000000003    BigDecimal x = new BigDecimal( "3.9" );    BigDecimal bdVal = x.subtract( x.remainder( new BigDecimal( "0.1" ) ) );    System.out.println(bdVal); // 3.9

为什么是3.8000 …
003?因为Java使用FPU来计算结果。3.9不可能以IEEE双精度表示法精确存储,因此它存储3.89999…。3.8999%0.01给出0.09999
…因此结果比3.8大一点。



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

原文地址: http://outofmemory.cn/zaji/5091721.html

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

发表评论

登录后才能评论

评论列表(0条)

保存