繁体   English   中英

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

[英]ceil or round off after decimal value in Java

我有一个十进制值 46.58 我希望它像 46.60 或 46.44 它会像 46.40。 尝试了几种方法,例如数学类的回合 function 和 Bigdecimal,但它并没有在十进制值后四舍五入。

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

您首先需要使用标准的半向上RoundingMode到小数点后 1 位,然后再次将比例增加到 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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM