Tại sao Java không nhất quán khi so sánh -0.0 và +0.0? Phương pháp chuẩn Java để so sánh các số với tài khoản cho -0/+ 0 là gì?Java - so sánh các số 0 dương và âm
Tôi đã gặp ông kẹ này cụ thể:
public class ZeroCompare {
public static void main(String[] args) {
if (0.0 == -0.0) {
System.out.println("== --> same");
} else {
System.out.println("== --> different");
}
if (new Double(0.0).equals(-0.0)) {
System.out.println("equals --> same");
} else {
System.out.println("equals --> different");
}
}
}
It in như sau:
== --> same
equals --> different
tôi mạnh mẽ không thích thực tế là như thế nào bạn so sánh hai giá trị này ảnh hưởng đến kết quả và tôi muốn yêu cho một lời giải thích.
trước tiên chữ bên trong bằng (-0,0) là Float không phải là Gấp đôi. và thứ hai phương thức equals so sánh các đối tượng và cho các literals khác nhau có các đối tượng wrapper khác nhau. –
@amitmahajan Đó là một đôi. Nó sẽ yêu cầu một 'f' hoặc' F' ở cuối là một chữ phao. – Kayaman
Nhân tiện, các số dấu phẩy động không bao giờ được so sánh với sự bình đẳng chính xác. Họ yêu cầu một giá trị đồng bằng nhỏ để xem nếu hai số đủ gần để được coi là bằng nhau (mặc dù trong trường hợp cụ thể này, đây là một vấn đề nhỏ). – Kayaman