让我们考虑下面的代码片段

public static void main(String[] args) {
        DecimalFormat twoDForm = new DecimalFormat("#.00");
        double k=4.144456;
        System.out.println(twoDForm.format(k));
    }


我期望输出为4.15,就像我们考虑迭代舍入一样,答案应该是4.15,但是我猜DecimalFormat在舍入时仅检查立即下一位数字值。

有什么方法可以实现迭代舍入输出。

最佳答案

这个问题要求一种独特的舍入模式。该答案解决了获取特殊舍入的一般问题。

BigDecimal(double)构造函数和BigDecimal的toString()方法都是精确的。

BigDecimal bd = new BigDecimal(d);
String s = bd.toString();


使s带有String double的精确,未取整的d表示形式。然后,您可以执行任何必需的字符串操作以获取所需的值。此外,可以在BigDecimal舍入中使用任何bd舍入模式。

09-10 00:26
查看更多