[问与答] Java BigDecimal 的四舍五入使用问题

又来论坛求助 V 友了,今天在使用 BigDecimal 四舍五入保留一位小数的时候遇到了很神奇的问题。

double num1 = 5.95;
double num2 = 6.95;
double num3 = 7.95;
double num4 = 8.95;
double num5 = 9.95;
double num6 = 5.43;
System.out.println(new BigDecimal(num1).setScale(1, BigDecimal.ROUND_HALF_UP).doubleValue()); // 6.0
System.out.println(new BigDecimal(num2).setScale(1, BigDecimal.ROUND_HALF_UP).doubleValue()); // 7.0
System.out.println(new BigDecimal(num3).setScale(1, BigDecimal.ROUND_HALF_UP).doubleValue()); // 8.0
System.out.println(new BigDecimal(num4).setScale(1, BigDecimal.ROUND_HALF_UP).doubleValue()); // 8.9
System.out.println(new BigDecimal(num5).setScale(1, BigDecimal.ROUND_HALF_UP).doubleValue()); // 9.9
System.out.println(new BigDecimal(num6).setScale(1, BigDecimal.ROUND_HALF_UP).doubleValue()); // 5.4

8.95 和 9.95 四舍五入应该是 9.0 和 10.0 ,但是输出不是这样,但是 5.95 、6.95 、7.95 又不是这样,这是为啥捏

发表回复

您的电子邮箱地址不会被公开。