当前位置: 首页 > 面试题库 >

BigDecimal setScale和舍入

范彭亮
2023-03-14
问题内容

这两个电话有什么区别?(有没有?)

// 1.
new BigDecimal("3.53456").round(new MathContext(4, RoundingMode.HALF_UP));
// 2.
new BigDecimal("3.53456").setScale(4, RoundingMode.HALF_UP);

问题答案:

提到但没有直接解决的一个重要问题是 “精度”“比例” 之间的区别以及它们在两个语句中的用法。 “精度”
是数字中有效数字的总数。 “比例” 是小数点右边的位数。

MathContext构造函数仅接受precision和RoundingMode作为参数,因此第一条语句中从未指定scale。

setScale() 显然接受scale和RoundingMode作为参数,但是第二条语句中从未指定精度。

如果将小数点向右移动一位,则差异将变得很清楚:

// 1.
new BigDecimal("35.3456").round(new MathContext(4, RoundingMode.HALF_UP));
//result = 35.35
// 2.
new BigDecimal("35.3456").setScale(4, RoundingMode.HALF_UP);
// result = 35.3456


 类似资料:
  • 在Java 6中,只有两个Double#valueOf方法:和。 1-当我执行Double#valueOf(float)时,Witch方法正在调用? 根据Javadoc,它似乎是,但Eclipse链接有。 2-为什么会有这些差异? 调用与浮动轮的结果: 鉴于 javadoc(http://docs.oracle.com/javase/6/docs/api/java/lang/Double.html

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

  • 问题内容: 这是小代码来说明我所看到的 打印: 我要打印 我需要做什么? 问题答案: 在使用之前添加以下行: 查看其他舍入模式,看看哪种最适合您。 注意:此方法仅在JDK 1.6或更高版本中有效

  • 问题内容: 在我的课程中,我被告知: 连续值大约在内存中表示,因此使用浮点数进行计算会产生舍入误差。这些是位模式的微小差异。因此,如果和为浮点,则测试是不安全的。 指的是Java。 这是真的?我已经将比较语句与s和s一起使用,并且从未遇到过舍入问题。我从来没有读过类似的教科书。虚拟机肯定占了这一切吗? 问题答案: 是真的。 这是如何在内存中以有限数量的位表示浮点值的固有限制。 例如,该程序显示“

  • 问题内容: 我想将双精度数四舍五入到一定数量的小数,总是四舍五入。 例 四舍五入到.00 => 1.5679999到1.56 四舍五入至.000 => 1.5679999至1.567 我想要一个Double而不是一个连接字符串 问题答案: 只需替换为!

  • 为什么四舍五入到 1 位的数字仍然写入具有许多位数的 Excel。 例如: 尽管我在写<code>myvar</code>,它已四舍五入到单元格A1的一位数字,尽管单元格显示4567.2,但单击单元格会显示整个值,所有数字位于公式栏尾数右侧。 我应该期待这种行为吗?