int i = 0, j = 0;
double nan1 = (double)0/0;
double nan2 = (double)0/0;
double nan3 = (double)i/j;
System.out.println(Double.doubleToRawLongBits(nan1) == Double.doubleToRawLongBits(nan2));
System.out.println(Double.doubleToRawLongBits(nan1) == Double.doubleToRawLongBits((double)0/0));
System.out.println(Double.doubleToRawLongBits(nan3) == Double.doubleToRawLongBits(nan2));
đầu ra:Lẫn lộn trên NaN trong Java
true
true
false
Xin hãy giúp tôi làm thế nào đầu ra đến true
cho hai đầu tiên và false
cho người cuối cùng. Vui lòng cho tôi biết công việc thực tế của phương pháp Double.doubleToRawLongBits() là gì.
Có hai 'NaN' khác nhau được tạo ra. Một là '0x7ff8000000000000' và cái kia là' 0xfff8000000000000'. Phần cứng dường như cung cấp '0xfff8000000000000' cho' 0/0'. Tuy nhiên, tuyên truyền liên tục của trình biên dịch đang sử dụng '0x7ff8000000000000' thay thế. Trừ khi tôi bỏ qua một cái gì đó, điều này trông giống như một lỗi cho tôi. – Mysticial
Nếu bạn bật 'strictfp' cho phương thức thì sao? – Joey
Ngoài ra: »Trong IEEE 754 định dạng lưu trữ điểm nổi phù hợp tiêu chuẩn, NaN được xác định bằng các mẫu bit cụ thể, được xác định trước duy nhất cho các NaN. Bit đăng nhập không quan trọng. «([Wikipedia] (http://en.wikipedia.org/wiki/NaN#Encoding)) – Joey