BigDecimal舍入问题

时间:2015-01-30 12:03:48

标签: java

我想将1256.3648转换为126.36(最多2位小数)

要实现此功能,我正在使用.setScale(2, BigDecimal.ROUND_HALF_UP));

但由于某些原因,它不起作用

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

你可以这样做

.setScale(2, RoundingMode.FLOOR);

假设您在BigDecimal对象

上调用它

将o / p

  

1256.36

如果您输入的是1256.3648

  

记住,

     

java.math.BigDecimal.setScale(int newScale, RoundingMode roundingMode)会返回一个BigDecimal,其比例是指定的   值,其未缩放值由乘以或确定   将此BigDecimal的未缩放值除以适当的幂   十,保持其整体价值。

答案 1 :(得分:2)

这是一个展示四舍五入的测试程序:

import java.math.BigDecimal;

public class Test {
  public static void main(String[] args) {
    BigDecimal x = new BigDecimal("1256.3648");
    BigDecimal y = x.setScale(2,BigDecimal.ROUND_HALF_UP);
    System.out.println(x);
    System.out.println(y);
  }
}

输出:

1256.3648
1256.36

x未更改,但setScale调用的结果已正确舍入。