Math.round(...) and bug 6430675
Hi. Since 6430675 fix, Math.round(float) and Math.round(double) specs no longer specify rounding by adding 0.5 and then using floor, and let the user believe that they "now round up properly". However playing with fresh JDK 7 and 8 versions I saw that these methods still exhibit some suprising results coming from adding 0.5 and then using floor. For example, for odd values in [8388609.0f,16777215.0f] or [-16777215.0f,-8388609.0f], which are mathematical integers, Math.round(float) returns value+1. Shouldn't the references to floor(value+0.5(f/d)) be restored in the specs, or the implementations having a work-around for these cases? -Jeff
Hi Jeff, Based on my tests it looks as if you are correct about the behavior. Would you mind filing an issue so that this may be tracked? Thanks, Brian On Jan 31, 2013, at 1:26 PM, Jeff Hain wrote:
Hi.
Since 6430675 fix, Math.round(float) and Math.round(double) specs no longer specify rounding by adding 0.5 and then using floor, and let the user believe that they "now round up properly".
However playing with fresh JDK 7 and 8 versions I saw that these methods still exhibit some suprising results coming from adding 0.5 and then using floor. For example, for odd values in [8388609.0f,16777215.0f] or [-16777215.0f,-8388609.0f], which are mathematical integers, Math.round(float) returns value+1.
Shouldn't the references to floor(value+0.5(f/d)) be restored in the specs, or the implementations having a work-around for these cases?
-Jeff
Would you mind filing an issue so that this may be tracked?
Done: "Math.round has surprising behavior for odd values of ulp 1" -Jeff
FYI this came through as http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=8010430. Brian On Feb 2, 2013, at 1:40 AM, Jeff Hain wrote:
Would you mind filing an issue so that this may be tracked?
Done: "Math.round has surprising behavior for odd values of ulp 1"
-Jeff
participants (2)
-
Brian Burkhalter
-
Jeff Hain