Python勉強中 4

「Python3.0では数値の精度を保とうとせず、より正確な答えを返すように仕様が変更されています。」とあったので、ちょっと実験。

>>> x = 1 / 3
>>> print(x)
0.333333333333
>>> print(x * 3)
1.0

んー、まあ1を3で割った後に3で掛けるから1でいいんだけどさ。
なんで0.333333333333の3倍が1なのだろうか?

>>> 0.333333333333 * 3
0.9999999999990001

普通に計算したらこうなった。
うーん、、、謎が多いな。



<追記>
最後の計算にprint()を使ってなかったのでそれも試してみた。

>>> print(0.333333333333 * 3)
0.999999999999

これなら納得がいく。
どうやらprint()を使うか使わないかでも結果が変わってくるらしい。