如何用浮点运算解决精度误差

Wes*_*ley 2 java math currency floating-accuracy

我正在尝试制定一个计算给定金额的等价变化量的程序.程序中的所有内容都运行良好,直到我得到便士.当我得到便士时,我已经做了很多浮点算术,这个值变得不准确.这是输出:

在此输入图像描述

正如我们所看到的,而不是具有0.2(我会被分0.1拿到2,正确答案),我们有019999999999959064(当由0.01分获得便士的量,我们得到1不2).如何解决这个问题,以便获得正确数量的便士?

Bat*_*eba 7

你不能.浮点不是建模精确货币值的好选择.

(i)使用一种long类型并以便士的形式工作,或(ii)使用旨​​在模拟货币的类别.