我想要一份加java的双人套餐。我希望它是这样圆圆的:
我试着用这样的圆圈:
amount = amount *10;
amount = Math.round(amount)/10;但是,正如你所见,这不是工作。
谢谢你的回答!
发布于 2015-03-16 17:13:29
Math.round(amount * 20) / 20f是一种方式。
发布于 2015-03-16 17:17:24
请不要认为使用浮点数的四舍五入会产生错误,因为浮点数的内部二进制表示形式(双人相同)。因此,像Math.round(amount * 20) / 20f这样数量为23.01的操作可以给出结果23.000000003 (这是我没有检查过的一个例子,但是使用很少的测试很容易找到问题)。
用BigDecimal代替。
发布于 2015-03-16 17:23:45
我会这样做:
double[] amounts = new double[]{24.04, 24.07, 24.02, 24.08};
for(double d : amounts){
double d2 = Math.round(d * 20) / 20.0;
System.out.println(String.format("%.2f -> %.2f",d,d2));
}其结果是:
24,04 -> 24,05
24,07 -> 24,05
24,02 -> 24,00
24,08 -> 24,10编辑就像其他人建议的那样,可能会有一些精确的错误。如果按照我的例子中的建议打印它,它很可能是不可见的。但这取决于你需要这个号码做什么..。
https://stackoverflow.com/questions/29082837
复制相似问题