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

2022-08-31 07:35:31

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


答案 1

简而言之:

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

答案 2

类的每个对象都有一个方法 compareTo,您可以使用它将其与另一个大十进制进行比较。然后将 的结果进行比较,或者取决于您需要什么。阅读文档,您将找到答案。BigDecimalcompareTo> 0== 0< 0

运算符 、 等只能用于基元数据类型 (如 、 或它们的包装类,如 和 )。==<>intlongdoubleIntegerDouble

从以下文档:compareTo

将其与指定的 进行比较。BigDecimalBigDecimal

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

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


推荐