当前位置: 首页 > 知识库问答 >
问题:

将BigDecimal舍入为整数值

闾丘康安
2023-03-14

检查了一些解决方案,但我没有得到预期的结果,这是我的代码

BigDecimal value = new BigDecimal(450.90);
value.setScale(0, RoundingMode.HALF_UP); //Also tried with RoundingMode.UP
return value.intValue();

谢了!

共有1个答案

赵永逸
2023-03-14

setscale返回一个新的bigdecimal,结果不会更改调用它的实例。因此,将返回值赋给value:

value = value.setScale(0, RoundingMode.UP);

现场示例

我还将其更改为roundingmode.up,因为您说您总是想要四舍五入。但是根据您的需要,您可能需要roundingmode.clime;这取决于您希望-451.2变成什么样(-452[向上]或-451[上限])。有关更多信息,请参见roundingmode

 类似资料:
  • 问题内容: 我有Hibernate方法,它返回给我一个BigDecimal。我有另一个API方法,我需要将该数字传递给它,但是它接受Integer作为参数。我不能更改两种方法的返回类型或变量类型。 现在如何将BigDecimal转换为Integer并将其传递给第二种方法? 有没有解决的办法? 问题答案: 您将致电(或仅致电),如果您丢失了信息,它甚至会引发异常。返回一个int,但是自动装箱可以解决

  • 问题内容: 这两个电话有什么区别?(有没有?) 问题答案: 提到但没有直接解决的一个重要问题是 “精度” 和 “比例” 之间的区别以及它们在两个语句中的用法。 “精度” 是数字中有效数字的总数。 “比例” 是小数点右边的位数。 MathContext构造函数仅接受precision和RoundingMode作为参数,因此第一条语句中从未指定scale。 显然接受scale和RoundingMode

  • 问题内容: 我需要以下结果 还是?我该怎么办? 问题答案: 您可以使用将小数位数减少为零。假设拥有要取整的值: 使用起来有点麻烦,因为它要求您指定要保留的位数。在您的示例中,该值为3,但这不适用于所有值: (请注意,对象是不可改变的,都和会返回一个新的对象。)

  • 问题内容: 我想要一个函数来转换 Bigdecimal 和。但是没有函数可以同时满足这两个转换。请帮助实现这一目标。 以下是我尝试过的。 值10.12345: 输出: 值10.12556: 输出: 问题答案: 我认为您正在寻找的是。从javadoc: 舍入模式将舍入到“最近的邻居”,除非两个邻居都等距,在这种情况下,将舍入到偶数邻居。如果舍弃分数左边的数字为奇数,则表现为ROUND_HALF_UP

  • 我将以下代码与java BigDecimal setScale方法结合使用,并使用半\u偶数舍入模式,得到以下结果。 结果:1.11 预计:1.12 由于距离5最近的偶数数字应该是2,因此我预期的结果是1.12。但结果是1.11。再一次, 结果:1.15 预期:1.14 因为5左边的偶数是4,所以我希望结果是1.14。对此有什么解释吗?

  • 我试图在Java中完善BigInteger,以下是我执行的代码 因此,输出prec1 = 49.32和prec2 = 49.33,对于我的使用情况,我需要始终舍入到49.33,那么除了设置两次比例之外,还有其他方法舍入到49.33吗?