又来论坛求助 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 又不是这样,这是为啥捏
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.