为了账号安全,请及时绑定邮箱和手机立即绑定

如何避免Java中浮点数或双精度的浮点精度错误?

如何避免Java中浮点数或双精度的浮点精度错误?

呼啦一阵风 2019-11-05 09:04:25
如何避免Java中浮点数或双精度的浮点精度错误?我有一个非常恼人的问题,长数量的浮动或双倍在Java中。基本上,我的想法是,如果我执行:for ( float value = 0.0f; value < 1.0f; value += 0.1f )    System.out.println( value );我得到的是:0.00.10.20.30.40.50.60.700000050.80000010.9000001我知道有一个累积的浮动精度误差,但是,如何摆脱这一点?我试着用双倍来减少错误的一半,但结果仍然是一样的。有什么想法吗?
查看完整描述

3 回答

?
人到中年有点甜

TA贡献1895条经验 获得超7个赞

您可以使用以下类来避免这个特定的问题BigDecimalfloatdouble作为ieee 754浮点,不是设计得非常精确,而是设计得更快。但请注意乔恩的观点如下:BigDecimal不能准确地表示“三分之一”double能准确表示“十分之一”。但是对于(比如说)财务计算,BigDecimal像这样的类往往是可行的,因为它们可以用我们人类看待它们的方式来表示数字。

查看完整回答
反对 回复 2019-11-06
  • 3 回答
  • 0 关注
  • 446 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信