浮動小数点が久しぶり
いやー恥ずかしい。
codeIQでなんとなしにpythonの初級者問題をやっていたら、
num = 0 cnt = 0 while num < 1: num += 0.1 cnt += 1 print cnt
選択肢の問題だったが、「そら10だっぺ」と解答したらぶぶー。11でした。 あー浮動小数点。
num = 0 cnt = 0 while num < 1: num += 0.1 cnt += 1 print "num = {0:.20f}".format(num) print cnt
num = 0.10000000000000000555 num = 0.20000000000000001110 num = 0.30000000000000004441 num = 0.40000000000000002220 num = 0.50000000000000000000 num = 0.59999999999999997780 num = 0.69999999999999995559 num = 0.79999999999999993339 num = 0.89999999999999991118 num = 0.99999999999999988898 num = 1.09999999999999986677 11
でもこれPythonだけじゃないよ、ってツッコミはやめておく。
package main import "fmt" func main() { num := 0.0 cnt := 0 for num < 1 { num += 0.1 cnt += 1 fmt.Println(num) } fmt.Println(cnt) }
0.1 0.2 0.30000000000000004 0.4 0.5 0.6 0.7 0.7999999999999999 0.8999999999999999 0.9999999999999999 1.0999999999999999 11