我将以下代码与java BigDecimal setScale方法结合使用,并使用半\u偶数舍入模式,得到以下结果。
new BigDecimal(1.115).setScale(2, RoundingMode.HALF_EVEN).toPlainString()
结果:1.11
预计:1.12
由于距离5最近的偶数数字应该是2,因此我预期的结果是1.12。但结果是1.11。再一次,
new BigDecimal(1.145).setScale(2, RoundingMode.HALF_EVEN).toPlainString()
结果:1.15
预期:1.14
因为5左边的偶数是4,所以我希望结果是1.14。对此有什么解释吗?
这是由浮点不精确(在双精度输入值中)引起的。
System.out.println(new BigDecimal(1.115));
1.1149999999999999911182158029987476766109466552734375
改用String构造函数。
BigDecimal.valueOf("1.115")
一旦数字是BigDecimal,就不会丢失精度,取整工作正常。但您必须确保数字完整地输入到bigdecime中(并且在此之前没有通过强制使用浮点类型而丢失精度)。
我们有以下代码: 我们正在对此进行单元测试,并根据是否在测试类上使用事务性测试得到不同的结果。 我只想知道我们是否应该期望的应用程序与一起考虑,还是在它之前考虑。 例如: 说: 价格=4.00 累计税收=1.20 您是否希望计算结果如下: a) <代码>4.00/1.20=3.33333333-- 或 b)<代码>4.00 / 1.20 = 3.33333333...-- 正如我所说,我们对这段代
使用圆化模式时。java的半偶数(默认值)。文本DecimalFormat,我在返回值中看到异常。 我意识到存在精度错误,请参见:Java BigDecimal setScale和舍入为半偶数 然而,由于这是,我希望它会被处理 定义: 这是检查双倍舍入的示例: 使用java对第4个值进行四舍五入。文本十进制格式,第一个值为原始值 上面列出的每种情况下,最近邻是1,5是等距的,对吗?所以所有这些情况
问题内容: 我面临该功能的奇怪行为: 此代码打印: 我希望浮动值总是四舍五入,但是取整到最接近的偶数。 为什么会出现这种行为?获得正确结果的最佳方法是什么? 我尝试使用,但结果是相同的。 问题答案: “ 数字类型” 部分明确记录了此行为: x 四舍五入为n位数字,四舍五入为偶数。如果省略n,则默认为0。 注意 四舍五入到一半 。这也被称为 银行家四舍五入 ; 通过四舍五入到最接近的 偶数, 您可以
问题内容: 这两个电话有什么区别?(有没有?) 问题答案: 提到但没有直接解决的一个重要问题是 “精度” 和 “比例” 之间的区别以及它们在两个语句中的用法。 “精度” 是数字中有效数字的总数。 “比例” 是小数点右边的位数。 MathContext构造函数仅接受precision和RoundingMode作为参数,因此第一条语句中从未指定scale。 显然接受scale和RoundingMode
我想使用ControlTemplate创建一个圆角按钮。这是我的代码,当我的宽度和高度等于30时,它能完美地工作。请问,是否可以将RadiusX和RadiusY设置为按钮的一半(例如,RadiusX={width/2})?
在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