import java.math.BigDecimal;
public class HelloWorld{
public static void main(String []args){
BigDecimal previousOperationAmount = new BigDecimal(1149.35);
Double requestedAmount = 1149.35;
if (requestedAmount != previousOperationAmount.doubleValue()) {
System.out.println("Hello 1");
}
if(!requestedAmount.equals(previousOperationAmount.doubleValue())) {
System.out.println("Hello 2");
}
}
}
有两种比较双值的方法.. 一个是!=运算符,一个是.equals运算符。我明白.equals是更好的比较方式。但在这里,!=比较也没有给出任何错误。
可以使用!=比较双值? 是!=检查双值是否确定?
答案 0 :(得分:3)
documentation中明确指出了差异:
请注意,在大多数情况下,对于两个类
时,Double
,d1
和}的实例d2
,当{且仅当d1.equals(d2)
的值为true
d1.doubleValue() == d2.doubleValue()
也具有值
true
。但是,有两个例外:
- 如果
d1
和d2
都代表Double.NaN
,那么equals
方法会返回true
,即使Double.NaN==Double.NaN
具有false
价值d1
。- 如果
+0.0
代表d2
而-0.0
代表false
, 反之亦然,相等的测试具有值+0.0==-0.0
,即使如此true
的值为Higher order functions
。