Java 将BigDecimal四舍五入为整数值

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,它的值是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 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
}