Tôi nghĩ rằng kết quả của bất kỳ phép toán trên NaN nên cung cấp cho tôi một NaN trở lại, nhưng Math.round(Float.NaN) == 0
Tại sao Math.round() trả về 0 cho các đối số NaN?
lý do cho hành vi như vậy của Math.round() là gì?
Thật kỳ lạ, C# hoạt động khác: http://msdn.microsoft.com/en-us/library/75ks3aby.aspx
như @pst đã nói, hành vi bình thường của nó được xác định cho NaN: "Nếu đối số là NaN, kết quả là 0". –
Lý do là có một lỗi trong 'Math.round()' khi được gọi trên NaN nó có khả năng hủy hoại các cuộc gọi trong tương lai tới 'Math.round()': http://bugs.sun.com/bugdatabase/ view_bug.do?bug_id=4755500 –
Sự khác biệt có thể là; trong Java nó trả về 'long' mà không thể là' Double.NaN' trong khi C# nó trả về một 'double' –