在将数字提供给 DecimalFormat 之前,使用Math#floor和除法进行乘法运算。这与截止圆角相同。
// Replace N with the desired number of decimals after the comma
number = Math.floor(1eN * number) / 1eN
由于浮点计算中的舍入错误,这并不完美,因此您仍然必须为 DecimalFormat 指定 N 个小数。
一种(更昂贵,但也更合乎逻辑)的替代方法是使用BigDecimal。
// Given as seperate statements for clarity, but these can be combined into a single line
// Replace "N" with the number of decimals after the comma
MathContext NDecimals = new MathContext(N, RoundingMode.FLOOR);
BigDecimal bdNumber = new BigDecimal(number, NDecimals);
number = bdNumber.doubleValue();