如何在 BigDecimal 上使用 >、=、< 等比较运算符

新手上路,请多包涵

我有一个将 unitPrice 设置为 BigDecimal 数据类型的域类。现在我正在尝试创建一种比较价格的方法,但似乎我不能在 BigDecimal 数据类型中使用比较运算符。我必须更改数据类型还是有其他方法?

原文由 user3127109 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 907
2 个回答

BigDecimal 的每个对象都有一个方法 compareTo 您可以使用它与另一个 BigDecimal 进行比较。然后比较 > 0 compareTo == 0< 0 取决于你需要什么阅读文档,您会发现。

The operators == , < , > and so on can only be used on primitive data types like int , long , double 或它们的包装类如 IntegerDouble

compareTo 的文档中:

将此 BigDecimal 与指定的 BigDecimal 进行比较。

此方法认为两个 BigDecimal 值相等但比例不同(如 2.0 和 2.00)的对象是相等的。此方法优先于六个布尔比较运算符(<、==、>、>=、!=、<=)中的每一个的单独方法提供。执行这些比较的建议习语是: (x.compareTo(y) <op> 0) ,其中 <op> 是六个比较运算符之一。

返回:-1、0 或 1,因为此 BigDecimal 在数值上小于、等于或大于 val。

原文由 Simulant 发布,翻译遵循 CC BY-SA 3.0 许可协议

简而言之:

 firstBigDecimal.compareTo(secondBigDecimal) < 0 // "<"
firstBigDecimal.compareTo(secondBigDecimal) > 0 // ">"
firstBigDecimal.compareTo(secondBigDecimal) == 0 // "=="
firstBigDecimal.compareTo(secondBigDecimal) >= 0 // ">="

原文由 torina 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题