Floating point 为什么/何时使用浮点而不是BigDecimal

Floating point 为什么/何时使用浮点而不是BigDecimal,floating-point,bigdecimal,Floating Point,Bigdecimal,这可能是一个幼稚或复杂的问题,但在调试浮点数问题之后,我有一个问题要问: 如果由于浮点数和大小数之间的整个基数2和基数10表示差异,浮点数存在舍入问题…为什么/何时使用浮点数和大小数 几乎所有主要的编程语言都有一个大的十进制库。。。苏 在我看来,数学的准确性胜过任何一种通过使用浮点数获得的性能提升…。。那么,为什么软件界没有放弃浮点运算并说,“对不起,我们都在使用BigDecimal”?假设您正在收集大量的度量数据。你知道你的传感器已经给了你5%的错误率。你为什么要花费大量的额外计算能力来实现数

这可能是一个幼稚或复杂的问题,但在调试浮点数问题之后,我有一个问题要问:

如果由于浮点数和大小数之间的整个基数2和基数10表示差异,浮点数存在舍入问题…为什么/何时使用浮点数和大小数

几乎所有主要的编程语言都有一个大的十进制库。。。苏


在我看来,数学的准确性胜过任何一种通过使用浮点数获得的性能提升…。。那么,为什么软件界没有放弃浮点运算并说,“对不起,我们都在使用BigDecimal”?

假设您正在收集大量的度量数据。你知道你的传感器已经给了你5%的错误率。你为什么要花费大量的额外计算能力来实现数据100%的正确计算?!比如说,我们所说的不是10MB的数据;但是10 TB。或PB。您是否仍然相信使用BigDecimal处理这些数据是值得的

换句话说:在很多情况下,你绝对不需要100%的正确性。然后你就不愿意支付100%的价格


我完全同意:例如,当我们谈论代表货币的数字时,我们会尽一切努力避免四舍五入错误。但我们不需要对所有数据一视同仁。因为在现实世界中,有很多不同的要求;好的工程是选择一种工具,在这种约束条件下提供最佳的解决方案。关键问题是你的应用程序是否能从精确的小数表示中获益

能够准确地表示1.01这样的数字在金融计算中非常非常有用

另一方面,在处理物理测量时,十进制结果本身只是一个近似值。我不相信任何物理量的测量精度达到了IEEE 754 64位浮点,这是最常见的双精度实现


有一种误解,认为BigDecimal库可以消除舍入问题。它们只对可以精确表示为相当短的小数的数字有帮助。BigDecimal在表示三分之一方面并不比double好。

“数学”?谁使用BigDecimal(或二进制浮点)进行数学?这两个系统都不能代表1/3,更不用说了√2.float/double通常由硬件支持,因此比bigdecimal快得多,bigdecimal通常由软件实现。