这可能是一个幼稚或沉重的问题,但在调试 float 问题后,我有一个问题要问:
如果由于 float 和 bigdecimals 之间以 2 为基数与以 10 为基数的表示差异而存在 float 的舍入问题……为什么/什么时候使用 float 与 bigdecimals?
几乎所有主要的编程语言都有一个 BigDecimal 库......所以
在我看来,数学的准确性胜过使用 float 所带来的任何性能提升......所以为什么软件世界不直接放弃 float 并说,“抱歉,我们要全力以赴-在 BigDecimal 上”?
最佳答案
关键问题是您的应用程序是否会受益于终止小数的精确表示。
能够准确表示 1.01 等数字在财务计算中非常非常有用。
另一方面,当您处理物理测量时,小数结果本身只是一个近似值。我不相信任何物理量的测量精度都达到 IEEE 754 64 位 float ,这是最常见的 double 实现。
有一种误解认为 BigDecimal 库消除了舍入问题。它们只对可以精确表示为相当短的小数部分的数字有所帮助。 BigDecimal 在表示三分之一方面并不比 double 好多少。
关于floating-point - 为什么/何时使用 float 而不是 BigDecimal,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43852302/