Java bigdecimal 或 double

标签 java floating-point type-conversion bigdecimal

我有一个格式为 (13,2) 13 位数字和 2 位小数的数字。我需要对其进行一些计算(如乘法、除法)。我计划使用 BigDecimal 进行计算。我应该使用 double 还是 float 进行计算,因为 BigDecimal 有点慢?

最佳答案

最重要的考虑因素不是速度而是正确性。

如果您的值是 continuous value 的样本,就像对大小、距离、重量、角度等现实世界属性的测量,然后是 IEEE-754 doublefloat 可能是更好的选择。这是因为在这种情况下,十的幂不一定比其他值“更圆”(例如,以弧度为单位的角度测量值可以是超越数,但仍然是“圆的”)。

如果您的值为 discrete value像货币的度量,那么 double 是不正确的 而像 BigDecimal 这样的浮点小数类型是正确的。这是因为,在这种情况下,离散增量是有意义的,“0.01”的值比“0.009999999999999”或“0.0100000000000000001”这样的数字“更圆”并且更正确。

关于Java bigdecimal 或 double,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35075538/

相关文章:

floating-point - 利用 -mfloat-abi=hard 和 -mfpu=vfp/neon Codesourcery Lite 2013.05-24

python - 与变量一起使用的 10e 符号?

floating-point - 我应该如何解释 REAL 的 ASN.1 BER 标准?

r - 具有混合数据类型的数据框

java - 将JavaFX TextField的内容转换为Integer

java - Android - 更改ListView项目的TextStyle

Java GET 请求没有协议(protocol)?

c++ - 乘以 1.0 和 int 到浮点转换的精度

java - 如何通过aspectJ切入点不匹配强制编译错误

java - 在 Java 中从 Solr 服务器中选择数据