我已经阅读了几篇关于使用十进制格式和舍入的文章,我认为我正确地使用了它,但不知何故 HALF_EVEN、HALF_DOWN 或 HALF_UP 舍入不起作用。
如果它与 eclipse 设置有关,或者我真的错误地使用了十进制格式,您有什么想法吗?
我的目标是像标准数学四舍五入一样将每个数字从 0.55 舍入到 0.6。所以......正如我所假设的......最好的选择是用“HALF_UP”四舍五入。
代码:
import java.math.RoundingMode;
import java.text.DecimalFormat;
public class Rounding {
public static void main(String[] args) {
DecimalFormat df = new DecimalFormat();
df.setMinimumFractionDigits(1);
df.setMaximumFractionDigits(1);
df.setRoundingMode(RoundingMode.HALF_UP);
for (double x = 0.55; x < 10.0; x++) {
System.out.println("Original value: " + x + "\tRounded value: " + df.format(x));
}
}
}
结果:
Original value: 0.55 Rounded value: 0,6
Original value: 1.55 Rounded value: 1,6
Original value: 2.55 Rounded value: 2,5
Original value: 3.55 Rounded value: 3,5
Original value: 4.55 Rounded value: 4,5
Original value: 5.55 Rounded value: 5,5
Original value: 6.55 Rounded value: 6,5
Original value: 7.55 Rounded value: 7,5
Original value: 8.55 Rounded value: 8,6
Original value: 9.55 Rounded value: 9,6
最佳答案
一旦您拥有 double
格式的数字,您就已经创建了隐藏的不准确性,可以在您看不到它的情况下将数字四舍五入到中点以下或以上。
您需要使用 BigDecimal。
关于java - HALF_EVEN 舍入不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40061016/