Ich dachte, dass Ergebnis einer mathematischen Operation auf einem NaN mir eine NaN zurück geben sollte, aber Math.round(Float.NaN) == 0
Warum gibt Math.round() 0 für NaN-Argumente zurück?
Was ist der Grund für ein solches Verhalten von Math.round()?
Merkwürdigerweise verhält sich C# anders: http://msdn.microsoft.com/en-us/library/75ks3aby.aspx
wie @pst gesagt hat, ist das normale Verhalten für NaN definiert: "Wenn das Argument NaN ist, ist das Ergebnis 0". –
Die Begründung ist, dass es früher einen Fehler in 'Math.round()' gab, wenn er auf NaN aufgerufen wurde, könnte er möglicherweise zukünftige Aufrufe von 'Math.round()' ruinieren: http://bugs.sun.com/bugdatabase/ view_bug.do?bug_id=4755500 –
Der Unterschied ist wahrscheinlich; in Java gibt es 'long' zurück, das nicht'Double.NaN' sein kann, während ein C# ein' double' zurückgibt. –