我正在使用BigDecimal处理我的应用程序中的正数,我想在第4个之后截断小数。 我似乎几乎找到了我想要的RoundingMode.DOWN,但是当从一个double创建BigDecimal时会出现一些问题。
例如:
System.out.println("123.11119 = " + new BigDecimal("123.11119").setScale(4, RoundingMode.DOWN)); //Print 123.1111 which is exactly what I want
System.out.println("123.1111 = " + new BigDecimal("123.1111").setScale(4, RoundingMode.DOWN)); //So does this one
但是,以下打印123.1110
并不是我想要的:
System.out.println("123.1111 = " + new BigDecimal(123.1111d).setScale(4, RoundingMode.DOWN));
答案 0 :(得分:4)
这是因为代表性问题。
现实中的值123.1111d可能类似于123.111091231918498。
为什么建议在需要精确值时使用字符串构造函数。