gpt4 book ai didi

java - float 的递增/递减似乎不对

转载 作者:行者123 更新时间:2023-12-01 18:32:37 26 4
gpt4 key购买 nike

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

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:我猜这与二进制中 0.1 的二进制表示有关。

最佳答案

您可以通过使用 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
...

关于java - float 的递增/递减似乎不对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23464280/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com