使用 BigDecimal 作为初学者而不是 Double?
Using BigDecimal as a beginner instead of Double?
我目前正在学习 Java 并且偶然发现了“BigDecimal”的用法。据我所知,“BigDecimal”更精确,因此建议使用它而不是普通的 Double。
我的问题是:我应该始终使用“BigDecimal”而不是 Double,因为它总是更好还是有一些缺点?初学者切换到“BigDecimal”是否值得,还是仅在您对 Java 有更多经验时才推荐?
double
应在处理不需要完美精度的实数时使用。以下是一些常见示例:
- 计算机图形,有几个原因:很少需要精确度,因为很少有显示器的像素数超过四位数;此外,大多数三角函数仅适用于
float
和 double
,而三角函数对于大多数图形工作来说都是必不可少的
- 统计分析;像平均值和标准差这样的指标通常预计最多比单个数据点更精确
- 随机性(例如
Random.nextDouble()
),其中点不是特定位数;优先级是某个特定分布的实数
- 机器学习,其中正在学习乘法因子并且不需要特定的小数精度
对于像金钱这样的价值观,在任何时候使用 double
都是一个糟糕的时刻。
BigDecimal
通常应该用于金钱和其他任何您关心特定数量的 十进制 数字的地方,但它的性能较差并且提供的数学运算较少。
我目前正在学习 Java 并且偶然发现了“BigDecimal”的用法。据我所知,“BigDecimal”更精确,因此建议使用它而不是普通的 Double。
我的问题是:我应该始终使用“BigDecimal”而不是 Double,因为它总是更好还是有一些缺点?初学者切换到“BigDecimal”是否值得,还是仅在您对 Java 有更多经验时才推荐?
double
应在处理不需要完美精度的实数时使用。以下是一些常见示例:
- 计算机图形,有几个原因:很少需要精确度,因为很少有显示器的像素数超过四位数;此外,大多数三角函数仅适用于
float
和double
,而三角函数对于大多数图形工作来说都是必不可少的 - 统计分析;像平均值和标准差这样的指标通常预计最多比单个数据点更精确
- 随机性(例如
Random.nextDouble()
),其中点不是特定位数;优先级是某个特定分布的实数 - 机器学习,其中正在学习乘法因子并且不需要特定的小数精度
对于像金钱这样的价值观,在任何时候使用 double
都是一个糟糕的时刻。
BigDecimal
通常应该用于金钱和其他任何您关心特定数量的 十进制 数字的地方,但它的性能较差并且提供的数学运算较少。