- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
这个问题在这里已经有了答案:
Double vs. BigDecimal?
(6 个回答)
6年前关闭。
在处理现实世界的货币值(value)时,建议我使用 BigDecimal 而不是 Double。但我没有得到令人信服的解释,除了“通常是这样做的”。
你能解释一下这个问题吗?
最佳答案
这称为精度损失,在处理非常大的数字或非常小的数字时非常明显。带基数的十进制数的二进制表示在许多情况下是近似值而不是绝对值。要了解为什么需要阅读二进制浮点数表示。这是一个链接:http://en.wikipedia.org/wiki/IEEE_754-2008 .这是一个快速演示:
在精度 = 10 的 bc(一种任意精度计算器语言)中:
(1/3+1/12+1/8+1/15) = 0.6083333332
(1/3+1/12+1/8) = 0.5416666666666666
(1/3+1/12) = 0.416666666666666
Java双:
0.6083333333333333
0.5416666666666666
0.416666666666666663
Java浮点数:
0.60833335
0.5416667
0.4166667
如果您是一家银行,并且每天要负责数千笔交易,即使它们不是来自同一个账户(或者可能是),您也必须拥有可靠的数字。二进制浮点数不可靠 - 除非您了解它们的工作原理及其局限性。
关于Java:为什么在现实世界中我们应该使用 BigDecimal 而不是 Double?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6320209/
笙歌 痞性. 剩余 青怏 洒脱 现实 搁浅° 软萌 路途 娼妓 离骚 逐你 微尘 迷魂 ▼ 扎心 堇夏 残年っ ╭淡妆╮ 24K.纯疯 隐痛
我正在尝试不费吹灰之力地实现完全有效的持久性无知。不过我有很多问题: 最简单的选项 这真的很简单——可以像在 SOA 中那样使用 Spring Data 注释对实体进行注释(但让它们真正执行逻辑)?除
我想完成一项简单的任务。 我在可变宽度容器中有一个图像。 容器的宽度可以为 300、400、700 或 900 像素。这是通过媒体查询完成的图像应占据该容器的所有宽度。所以它也将是 300、400、7
我在使用 Storyboards AutoRotation 和 iPhone 时遇到问题。我已经将一个非常简单的项目与 3 个 View Controller 放在一起,并将其上传到 gitHub 以
我是一名优秀的程序员,十分优秀!