Java 中小数点后的 ceil 或四舍五入

ceil or round off after decimal value in Java

我有一个小数值 46.58,我希望它像 46.60 或 46.44 像 46.40。 尝试了几种方法,例如 Math class 的舍入函数和 Bigdecimal,但它没有在十进制值后舍入。

BigDecimal bigDecimal = new BigDecimal(value);
bigDecimal = bigDecimal.setScale(2,BigDecimal.ROUND_HALF_UP);
value = bigDecimal.doubleValue();
double value = Math.round(decimalValue);

您首先需要使用标准半向上舍入到小数点后 1 位 RoundingMode,然后再次将比例增加到 2:

BigDecimal bigDecimal = new BigDecimal("46.58");
bigDecimal = bigDecimal.setScale(1, RoundingMode.HALF_UP); // bigDecimal == 46.6
bigDecimal = bigDecimal.setScale(2, RoundingMode.UNNECESSARY); // bigDecimal == 46.60

以下解决方案对我有用。

    BigDecimal bigDecimal = new BigDecimal("46.58");
    bigDecimal = bigDecimal.setScale(1, RoundingMode.HALF_UP); 
    bigDecimal = bigDecimal.setScale(2, RoundingMode.UNNECESSARY); 
    double d = bigDecimal.doubleValue();
    String valstr = String.format("%.2f%n", d);
    System.out.println(valstr);