增加/减少浮动数似乎关闭

时间:2014-05-05 03:21:33

标签: java floating-accuracy

我有一个浮点来表示图像上的缩放系数。

setZoomPercent( currentZoomPercent - 0.1f );

我遇到的麻烦是减量会产生以下结果。我怎么能避免这个?

Zoom:100.0
Zoom:99.9
Zoom:99.8
Zoom:99.700005
Zoom:99.600006
Zoom:99.50001
Zoom:99.40001
Zoom:99.30001
Zoom:99.20001
Zoom:99.10001
Zoom:99.000015
Zoom:98.90002
Zoom:98.80002

P.S:我猜它与二进制的二进制表示形式有关。

1 个答案:

答案 0 :(得分:4)

您可以使用BigDecimal

来避免它
    BigDecimal d1 = new BigDecimal("100.00");
    BigDecimal d2 = new BigDecimal("0.1");
    for(int i = 0; i < 100; i++) {
        d1 = d1.subtract(d2);
        System.out.println(d1);
    }

产生

99.90
99.80
99.70
99.60
99.50
99.40
99.30
99.20
...