Java 将BigDecimal四舍五入为整数值
我有一个BigDecimal,它的值是450.90,我想四舍五入到下一个孔的整数值,然后打印不带任何小数点的整数值,就像这样 Val:450.90->四舍五入:451.00->输出:451 Val:100.00001->四舍五入:101.00000输出:101 检查了一些解决方案,但我没有得到预期的结果,这是我的代码Java 将BigDecimal四舍五入为整数值,java,math,rounding,bigdecimal,Java,Math,Rounding,Bigdecimal,我有一个BigDecimal,它的值是450.90,我想四舍五入到下一个孔的整数值,然后打印不带任何小数点的整数值,就像这样 Val:450.90->四舍五入:451.00->输出:451 Val:100.00001->四舍五入:101.00000输出:101 检查了一些解决方案,但我没有得到预期的结果,这是我的代码 BigDecimal value = new BigDecimal(450.90); value.setScale(0, RoundingMode.HALF_UP); //Also
BigDecimal value = new BigDecimal(450.90);
value.setScale(0, RoundingMode.HALF_UP); //Also tried with RoundingMode.UP
return value.intValue();
谢谢 返回一个新的BigDecimal
,其结果不会更改调用它的实例。因此,将返回值分配回值
:
value = value.setScale(0, RoundingMode.UP);
我也把它改成了RoundingMode.UP,因为你说你总是想把它凑起来。但根据您的需要,您可能需要
RoundingMode.CEILING
;这取决于您想要成为什么样的-451.2
(-452
[UP
]或-451
[天花板
])。有关更多信息,请参阅。您需要使用返回的值
BigDecimal value = new BigDecimal(450.90);
value = value.setScale(0, RoundingMode.HALF_UP); //Also tried with RoundingMode.UP
注意这是不变的
缩放/舍入操作(设置缩放和舍入)返回一个BigDecimal
其值大约(或正好)等于
操作数,但其比例或精度为指定值;就是,
它们随时间增加或减少存储数字的精度
对其价值的影响最小
使用:
使用Math.ceil()
函数。方法ceil给出大于或等于参数的最小整数
您可以从方法说明中了解它: 请注意,由于BigDecimal对象是不可变的,因此调用setScale 方法不会导致修改原始对象,相反 按照通常的惯例,将方法命名为setX mutate field X。 相反,setScale返回具有适当比例的对象;这个 返回的对象可能是新分配的,也可能不是新分配的
您忽略了示例中的设置比例,您的意思是像
(int)Math.ceil(450.90)
?如果以下任何答案回答了您的问题,按照本网站的工作方式,您可以通过单击旁边的复选标记来“接受”答案。细节:但前提是你的问题真的得到了回答。太好了!这确实解决了我的问题。我不会使用负数,所以取整模式。向上就可以了!thanks@RodrigoMartinez字体很高兴这有帮助。不要为我工作(我总是拿到451.0,但我需要拿到451@Black_Zerg:那么你不能做上面的事情;请参阅。
value.setScale(0, RoundingMode.CEILING);
public void test() {
BigDecimal value = new BigDecimal(450.90);
System.out.println(value.setScale(0, RoundingMode.HALF_UP)); // prints 451
}