- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我将以下代码与 half_even 舍入模式的 java BigDecimal setScale 方法一起使用,并得到以下结果。
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。对此有什么解释吗?
最佳答案
这是由浮点不精确引起的(在您的 double
输入值中)。
System.out.println(new BigDecimal(1.115));
1.1149999999999999911182158029987476766109466552734375
改为使用 String 构造函数。
BigDecimal.valueOf("1.115")
一旦数字为 BigDecimal,就不会丢失精度并且可以正常进行舍入。但是你必须确保数字完整地进入 BigDecimal(并且在此之前没有通过强制它通过浮点类型而失去精度)。
关于Java BigDecimal setScale 和 half_even 四舍五入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27141899/
这个问题已经有答案了: Why do immutable classes provide mutators? (1 个回答) 已关闭 8 年前。 感谢您的建议。 这是为什么: import java.
在我当前使用SpriteKit的项目中,我有一堆需要在不同时间分别放大和缩小的Sprite。问题在于,当我缩放节点时,物理主体不会随之缩放,因此会破坏物理状态。这是我为解决这个问题而编写的一个小示例:
有人请告诉我我犯的错误: 我的号码:225.0453,内部保存有 4 位数字。这是一个美元货币数字,我想要 pretty-print 来显示。我用RoundingMode.HALF_EVEN 由于美元
我正在这样做: (obj.getValue().divide(weight)).setScale(3, RoundingMode.HALF_DOWN) 我收到此错误: java.lang.Arithm
此代码在我提到的 setScale(); 行给我一个错误它给我一个错误,说需要四舍五入。我正在尝试制作一个应用程序,它将接受 cp 和 sp,然后根据利润/损失找到利润/损失百分比。有人可以帮我处理
setValue(BigDecimal value) { this.value=value; this.value.setScale(8, RoundingMode.H
考虑这段代码: import java.math.BigDecimal; import java.math.RoundingMode; public class RoundingTests {
任何人都可以帮助我使用 BigDecimal,我是新手 我想将 24.33 舍入到 25.00 我只需要执行天花板操作 所以我做了这样的事情 BigDecimal amount = new BigDe
你好,我正在尝试使用 libGDX 制作一个简单的游戏,但我在使用 sprite 类时遇到了一些问题,这是我的代码: package com.carebearer; import com.badlog
我正在使用 libgdx,但使用 BitmapFont 类给了我一个非常巨大的文本。即使我将比例设置为非常小的值(0.1f),字体仍然会以巨大的尺寸呈现。 Libgdx 文档没有解释我应该使用的正常值
我正在关注这个 YouTube 系列节目,您可以在其中学习如何在出现错误时编写游戏程序,因此我修复了该错误,但这导致了另一个错误。而且我很确定我所做的与 YouTuber 完全一样。 所以,如果您知道
我们有以下代码: BigDecimal net = price .divide(taxCumulative, RoundingMode.HALF_UP) .setScale(2, BigDecimal
我目前正在尝试缩放字体,但收到错误消息“方法 setScale(float, float) 未定义 BitmapFont 类型”这是我收到错误的代码部分,特别是在第 2 行和第 4 行。 fo
如果我使用 KineticJS 设置比例/缩放,我会收到一个奇怪的错误。出现随机线条。 EDIT1:好的。看起来如果我将 scaleRate 设置为 0.25、0.125、0.0625 等,它就可以工
public class Dummy { public static void main(String args[]) { String x = "1.234.567,89 E
我正在尝试使用以下命令指定BigDecimal值的精度:new BigDecimal(12.99).setScale(2, BigDecimal.ROUND_HALF_EVEN。但是,编译器告诉我se
我正在尝试在用户获得额外生命时缩放 Sprite 并在 1 或 2 秒后将其设置回正常值。 我有这个: if (_score == 2) { _life = _life + 1; st
在我的 Android 应用程序中,我加载了一张图片。用户可以使用这张图片放大、缩小和前后移动它。目前我一次只能让一个人工作。 经过大量测试后,我确定我所说的第二个是有效的。 matrix.setSc
我将以下代码与 half_even 舍入模式的 java BigDecimal setScale 方法一起使用,并得到以下结果。 new BigDecimal(1.115).setScale(2, R
为了对数字进行四舍五入,我使用以下代码: public static roundBd(BigDecimal bd){ BigDecimal result1 = bd.setScale(0, Rou
我是一名优秀的程序员,十分优秀!