1
我使用BigDecimal来处理我的应用程序中的正数,并且我想在第四个之后使小数截断。 我似乎几乎找到了我想要的RoundingMode.DOWN,但是在BigDecimal从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));
问题是'123.1111d'可能被存储为'123.111099999999',从而导致你的问题。 –
是的。这是我怀疑的。有没有办法解决这个问题? – 0x56794E
是的。不要从双打创建BigDecimals。 –