这是我想要java中的结果
1.05四舍五入到1.1
1.15舍入到1.2
但我已经尝试了
global.UnitPrice = Math.round(Double.parseDouble(String.format("%.2f", 1.05)));
结果= 1.00,应该是1.10?
我试过这种方法
Round to Next .05 in C
Multiply by 20, use ceiling, divide by 20.
但不能正常工作?更简单的方法?还是正式的方式?
答案 0 :(得分:1)
我不知道你的预期如何发挥作用。 String.format将返回“1.05”或“1.04”,具体取决于1.05如何转换为二进制(它不会是一个确切的数字)。将其解析为double将返回一个双倍,或者只是小于1.04,只是小于1.05,只是大于1.04,或者只是大于1.05。在所有情况下,将向下舍入到1.0,因为Math.round将舍入到最接近的整数。
另一种方法应该可以正常工作。
global.UnitPrice = Math.ciel(1.05*10)/10;
因为根据你的描述,你实际上并不想要舍入到.05,你想要舍入到最接近的.1。与所有浮点数一样,请记住精确的1.05是一个不可能存储的值,因此您可能会遇到浮点转换问题。