首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >BigDecimal.ROUND_HALF_UP和RoundingMode.HALF_UP的区别是什么?

BigDecimal.ROUND_HALF_UP和RoundingMode.HALF_UP的区别是什么?
EN

Stack Overflow用户
提问于 2013-11-03 06:32:17
回答 2查看 9.5K关注 0票数 6

如下所示:

代码语言:javascript
运行
复制
new MathContext(precision, RoundingMode.HALF_UP);

看起来很管用。但是,以下代码将返回错误:

代码语言:javascript
运行
复制
new MathContext(precision, BigDecimal.ROUND_HALF_UP);

错误:

代码语言:javascript
运行
复制
java: no suitable constructor found for MathContext(int,int)
    constructor java.math.MathContext.MathContext(java.lang.String) is not applicable
      (actual and formal argument lists differ in length)
    constructor java.math.MathContext.MathContext(int,java.math.RoundingMode) is not applicable
      (actual argument int cannot be converted to java.math.RoundingMode by method invocation conversion)
    constructor java.math.MathContext.MathContext(int) is not applicable
      (actual and formal argument lists differ in length)
EN

回答 2

Stack Overflow用户

发布于 2014-01-21 15:46:40

请注意,常量:

代码语言:javascript
运行
复制
RoundingMode.HALF_UP
BigDecimal.ROUND_HALF_UP

根据Javadoc和源代码,意思完全相同:

代码语言:javascript
运行
复制
public enum RoundingMode {
....
HALF_UP(BigDecimal.ROUND_HALF_UP),
....
} 
票数 3
EN

Stack Overflow用户

发布于 2018-06-26 18:33:52

请使用BigDecimal.ROUND_HALF_UP而不是RoundingMode.HALF_UP,因为RoundingMode.HALF_UP在内部调用BigDecimal.ROUND_HALF_UP,所以两者会给出相同的结果,但RoundingMode.HALF_UP需要更多步骤。

来源: java doc:

BigDecimal.ROUND_HALF_UP

public static final RoundingMode HALF_UP舍入模式向“最近邻居”取整,除非两个邻居距离相等,在这种情况下会向上取整。如果丢弃的分数是RoundingMode.UP 0.5,则行为与RoundingMode.DOWN相同;否则,行为与≥相同。请注意,这是学校通常教授的舍入模式。()

RoundingMode.HALF_UP

如果丢弃的分数是>= .5,则公共最终静态int ROUND_HALF_UP的行为与ROUND_UP相同;否则,行为与ROUND_DOWN相同。(舍入到“最近的邻居”,除非两个邻居都是等距离的,在这种情况下向上舍入。) ()

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19747652

复制
相关文章

相似问题

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