我在 Java 中有以下代码;
BigDecimal price; // assigned elsewhere
if (price.compareTo(new BigDecimal("0.00")) == 0) {
return true;
}
编写 if 条件的最佳方法是什么?
原文由 JoJo 发布,翻译遵循 CC BY-SA 4.0 许可协议
我在 Java 中有以下代码;
BigDecimal price; // assigned elsewhere
if (price.compareTo(new BigDecimal("0.00")) == 0) {
return true;
}
编写 if 条件的最佳方法是什么?
原文由 JoJo 发布,翻译遵循 CC BY-SA 4.0 许可协议
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4.1k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
3 回答1.7k 阅读✓ 已解决
使用
compareTo(BigDecimal.ZERO)
而不是equals()
:与
BigDecimal
常量BigDecimal.ZERO
相比,避免每次执行都必须构建new BigDecimal(0)
。仅供参考,
BigDecimal
也有常数BigDecimal.ONE
和BigDecimal.TEN
为了您的方便。笔记!
您不能使用
BigDecimal#equals()
的原因是它考虑了 _规模_:所以它不适合纯数字比较。但是,
BigDecimal.compareTo()
比较时不考虑比例: