http://www.kt.rim.or.jp/~kbk/zakkicho/09/zakkicho0903b.html#D20090311-4より。
不運なことに、the damage was done ―
整数除算は整数で結果を返していたのです。
あなたは“それがそんなに悪いことなの?”と不思議に思うかもしれません。
……
あなたが数値アルゴリズムを実装する関数(たとえば phase of the moonを計算するようなもの)
を記述するときには当然引数として浮動小数点数が指定されていることを期待するでしょう。
しかしPython は型宣言を持っていませんから、
呼び出し側が引数として整数を渡してくることを止める手段はありません。
わあ。
CやJavaを長年やっている人でも知らなかったりすることがあるのですが、いわゆるC系の言語では、整数を整数で割るとその結果は整数です。
なので
double d = 10 / 3;
と書けば、dには3.0が代入されます。
これに問題がないとは思いませんが、crowbarやDiksamは意図的にCに似せた言語なので、ここはやっぱり合わせておくべきかと思っていたのですが……
確かに型なし言語では、実数を引数に取る関数を作るとき、渡されるものが本当に実数である保証はなく、にもかかわらず中で割り算をやってしまうと整数同士の除算になってしまいますね。PascalやRubyのように演算子が分けてあるならともかく。
やっぱりこれは直すべきか。