【发布时间】:2016-08-18 02:30:30
【问题描述】:
有人知道我在这里做错了什么吗?我有一个浮点数,假设它是 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);
提前致谢。
【问题讨论】:
-
System.out.println(decimalFormat.format(0.04));打印0.04;你调用它的值小于0.04(将floored到0.03)。 -
@Long 你能告诉我们
this.accountSummary.getCreditAvailable()和this.accountSummary.getCreditLimit()的值是什么让你期望它们除以0.04 吗? -
不要格式化。只需将其四舍五入到小数点后两位即可。你应该没事的。
-
做一个 System.out.println(creditAvailableProportion)。您应该会发现它小于格式化前的 0.04。
-
但我需要它采用这种格式。有没有办法获得正确的价值?我试过地板和天花板,但都不对。
标签: java android math decimalformat