我正在使用 BigDecimal 来处理我的应用程序中的正数,并且我想让它在第四个之后截断小数。 我似乎几乎找到了我想要的 RoundingMode.DOWN,但是当 BigDecimal 是从 double 创建时存在一些问题。
例如:
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));
最佳答案
这是因为表示问题。
实际值 123.1111d 可能类似于 123.111091231918498。
这就是为什么当您想要获得精确值时建议使用字符串构造函数。
关于java - 使 BigDecimal 截断而不是舍入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21687776/