gpt4 book ai didi

java - DecimalFormat 返回错误结果

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

有人知道我在这里做错了什么吗?我有一个 float ,假设它是 0.04。格式化后变成0.03。显然输出结果已经比输入低0.01了。

这是我的代码:

float creditAvailableProportion = this.accountSummary != null ? (this.accountSummary.getCreditAvailable()/this.accountSummary.getCreditLimit()) : 0;
DecimalFormat decimalFormat = new DecimalFormat("#.##");
decimalFormat.setRoundingMode(RoundingMode.FLOOR);
float formattedCreditAvailableProportion = Float.parseFloat(decimalFormat.format(creditAvailableProportion));

return Math.min(1.0f, formattedCreditAvailableProportion);

提前致谢。

最佳答案

由于没有人解释这个问题,让我简要解释一下发生了什么。大多数系统(包括 java)中的 float 都是不精确的。这意味着 0.04 在内部存储为例如 .03999999999 或 .040000001 或类似的内容。因此,当您使用基本格式对其进行格式化时,最终可能会得到 0.03。解决办法是使用舍入格式,或者在格式前的值上加上.0000001。这样即使是地板也会得到正确的结果。
另一种方法是,如果可能的话,完全转储 float ,并使用整数(如 1e6),类似于 Android 对地理坐标的处理方式。

关于java - DecimalFormat 返回错误结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39009074/

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