On Nov 29, 2012, at 11:01 AM, Neil Toronto wrote:

> This is because numbers in [4.0,8.0) have one fewer bit with which to 
> represent the fractional part than numbers in [2.0,4.0). That bit is needed 
> to represent the larger integer part.

I'm trying to replicate this in Java, using the DecimalFormat class, and I'm 
getting

0.225 -> "0.22"
1.225 -> "1.22"
2.225 -> "2.22"
3.225 -> "3.22"
4.225 -> "4.22"
9.225 -> "9.22"
17.225 -> "17.22"
35.225 -> "35.22"
68.225 -> "68.22"
130.225 -> "130.22"
250.225 -> "250.22"

What gives?  If Java and Racket are both using IEEE standard double-precision 
floating point, and both rounding-to-even (as the DecimalFormat class doc says 
it does by default), why am I NEVER getting round-up behavior in Java?

I tried the negations of the same numbers, and they still all end in ".22", as 
though it were in round-towards-zero mode, but I queried the rounding mode and 
it says it's HALF_EVEN.

The corresponding results in Racket, BTW, are
("0.23" "1.23" "2.23" "3.23" "4.22" "9.22" "17.23" "35.23" "68.22" "130.22" 
"250.22")



Stephen Bloch
sbl...@adelphi.edu


____________________
  Racket Users list:
  http://lists.racket-lang.org/users

Reply via email to