gpt4 book ai didi

Java float 自动舍入问题

转载 作者:行者123 更新时间:2023-12-02 01:15:25 25 4
gpt4 key购买 nike

我有一个简单的方法来计算 equalRate,但我遇到了一个问题,似乎是不必要的舍入。

当我传入 99.002 时,它应该返回类似 9920.040080160 的内容

99.002/(100 – 99.002) x 100

但由于某种原因,它四舍五入到小数点后三位。它似乎与参数率的小数位数匹配。

  public float calculateEquivalentRate(float rate){
if(rate==100) {
return 0.000F;
}
return rate / (100 - rate) * 100;
}

有什么想法可以停止舍入吗?

最佳答案

float 的精度有限。如果还不够的话,可以换成 double 。如果这还不够,您可以使用任意精度的东西,例如 BigDecimal。

从 float 切换到 double 似乎可以为您提供所需的精度:

double rate = 99.002;
System.out.println(rate / (100-rate) * 100);

输出:

9920.040080160274

关于Java float 自动舍入问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58694873/

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