首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将BigDecimal集合为整数值

将BigDecimal集合为整数值
EN

Stack Overflow用户
提问于 2014-09-29 14:33:06
回答 5查看 46.5K关注 0票数 33

我有一个值为450.90的BigDecimal,我想把它集合到下一个洞整数值,然后打印不带任何小数点的整数值,如下所示;

阀值: 450.90 ->四舍五入: 451.00 ->输出: 451

阀值: 100.00001 ->四舍五入: 101.00000输出: 101

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

代码语言:javascript
运行
复制
BigDecimal value = new BigDecimal(450.90);
value.setScale(0, RoundingMode.HALF_UP); //Also tried with RoundingMode.UP
return value.intValue();

谢谢!

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2014-09-29 14:36:54

setScale返回一个带有结果的新BigDecimal,它不会更改调用它的实例。因此,将返回值赋值给value

代码语言:javascript
运行
复制
value = value.setScale(0, RoundingMode.UP);

实例化

我还把它改成了RoundingMode.UP,因为你说你一直想聚在一起。但是,根据您的需要,您可能需要RoundingMode.CEILING;这取决于您希望-451.2变成什么(-452 UP-451 CEILING)。有关更多信息,请参见RoundingMode

票数 68
EN

Stack Overflow用户

发布于 2014-09-29 14:37:25

用途:

代码语言:javascript
运行
复制
value.setScale(0, RoundingMode.CEILING);
票数 6
EN

Stack Overflow用户

发布于 2014-09-29 14:52:35

从方法描述:

请注意,由于BigDecimal对象是不可变的,所以setScale方法的调用不会导致修改原始对象,这与通常的方法名为setX变异字段X的惯例相反。相反,setScale返回一个具有适当比例的对象;返回的对象可能是新分配的,也可能不是新分配的。

代码语言:javascript
运行
复制
public void test() {
  BigDecimal value = new BigDecimal(450.90);
  System.out.println(value.setScale(0, RoundingMode.HALF_UP)); // prints 451
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26102362

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档