From: teeshift Date: 2006-12-01T10:05:09+09:00 Subject: floating point problem... floating indeed :( I recently wrote a code and haven't been found the bug and start suspecting that it was the floating computation that causing the problem. I did a little experiement and found the following phenomena: I am using Linux source 2.6.15-27-386 #1 PREEMPT Sat Sep 16 01:51:59 UTC 2006 i686 GNU/Linux Ubuntu is the OS. ##################### #!/usr/bin/ruby1.9 a = 1.0 a.to_f while(a < 15.0) a = a + 0.1 print a,"\t",a * a,"\n" end ##################### and the output is...(as following) quite odd. Anyone can explain it? or a way to avoid it (while keeping the precision) 1.1 1.21 1.2 1.44 1.3 1.69 1.4 1.96 1.5 2.25 1.6 2.56 1.7 2.89 1.8 3.24 1.9 3.61 2.0 4.0 2.1 4.41 2.2 4.84 2.3 5.29000000000001 2.4 5.76000000000001 2.5 6.25000000000001 2.6 6.76000000000001 2.7 7.29000000000001 2.8 7.84000000000001 2.9 8.41000000000001 3.0 9.00000000000001 3.1 9.61000000000001 3.2 10.24 3.3 10.89 3.4 11.56 3.5 12.25 3.6 12.96 3.7 13.69 3.8 14.44 3.9 15.21 4.0 16.0 4.1 16.81 4.2 17.64 4.3 18.49 4.4 19.36 4.5 20.25 4.6 21.16 4.7 22.09 4.8 23.04 4.9 24.01 5.0 25.0 5.1 26.01 5.2 27.04 5.3 28.09 5.4 29.16 5.5 30.25 5.6 31.36 5.7 32.49 5.8 33.64 5.9 34.81 6.0 35.9999999999999 6.1 37.2099999999999 6.19999999999999 38.4399999999999 6.29999999999999 39.6899999999999 6.39999999999999 40.9599999999999 6.49999999999999 42.2499999999999 6.59999999999999 43.5599999999999