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");
}
}
}
比較double值有兩種方法來比較雙值.. 一個與!=運算符和一個與.equals運營商。我明白,.equals是比較好的方法。但在這裏,!=比較也沒有給出任何錯誤。是用==確定性
可以使用!=雙值比較嗎? Is!=檢查確定性的雙重值嗎?
從技術上講,是和不是。是的,可以比較'double'(但不是'Double',因爲具有相同值的兩個'Double'對象不是'Double'對象)與!=相同。但是由於'double'並不是絕對精確的,所以你遇到了很多麻煩,比如比較1.000000000000000001到1.0(這很容易發生)。所以更好的方法包括,例如,使用'Math.abs(double1 - double2)> eps'(對於有用的eps)。 –
'!='是確定性的,就像'equals'一樣。你爲什麼不檢查'Double.equals'的文檔以找出答案? https://docs.oracle.com/javase/8/docs/api/java/lang/Double.html#equals-java.lang.Object- –
@FlorianSchaetz你的意思是'Math.abs(double1 - double2)<= eps'檢查平等時,對嗎?否則,'5.01'和'4.13'會通過檢查任何小於'1.0'的eps。 – Shark