我有一个值为450.90的BigDecimal,我想把它集合到下一个洞整数值,然后打印不带任何小数点的整数值,如下所示;
阀值: 450.90 ->四舍五入: 451.00 ->输出: 451
阀值: 100.00001 ->四舍五入: 101.00000输出: 101
检查了一些解决方案,但我没有得到预期的结果,这是我的代码;
BigDecimal value = new BigDecimal(450.90);
value.setScale(0, RoundingMode.HALF_UP); //Also tried with RoundingMode.UP
return value.intValue();谢谢!
发布于 2014-09-29 14:36:54
setScale返回一个带有结果的新BigDecimal,它不会更改调用它的实例。因此,将返回值赋值给value
value = value.setScale(0, RoundingMode.UP);实例化
我还把它改成了RoundingMode.UP,因为你说你一直想聚在一起。但是,根据您的需要,您可能需要RoundingMode.CEILING;这取决于您希望-451.2变成什么(-452 UP或-451 CEILING)。有关更多信息,请参见RoundingMode。
发布于 2014-09-29 14:37:25
用途:
value.setScale(0, RoundingMode.CEILING);发布于 2014-09-29 14:52:35
从方法描述:
请注意,由于BigDecimal对象是不可变的,所以setScale方法的调用不会导致修改原始对象,这与通常的方法名为setX变异字段X的惯例相反。相反,setScale返回一个具有适当比例的对象;返回的对象可能是新分配的,也可能不是新分配的。
public void test() {
BigDecimal value = new BigDecimal(450.90);
System.out.println(value.setScale(0, RoundingMode.HALF_UP)); // prints 451
}https://stackoverflow.com/questions/26102362
复制相似问题