Hatena::Grouprubyist

Ruby初心者prinyの学習帳 RSSフィード

2008-11-14コーヒーブレイク:数値の割り算 ~ / と % と divmod ~

rochefort さんの日記( re:数字を英語発音にする )を見て、練習:メソッドの作り方(3)で、大きな数字を、そのまま書く以外の方法で書いてみようと思った。

まねして、100 を 1e2、1000 を 1e3、 1000000 を 1e6、・・・ といった具合に変えてみた。
実行するとエラーになった。-> `to_english' for 2.0e-010:Float (NoMethodError)

divmod ではなく、/ を使っているからかも。divmod と / 、ついでに % したときのクラスを確認してみる。

i = 65021

p (i / 1e3).class  #=> Float

div, mod = i.divmod(1e3)
p div.class  #=> Fixnum
p mod.class  #=> Float

p (i % 1e3).class  #=> Float

(整数 / 1e3) したら Float になるからエラーになったのね。1e3 を 10**3 とかにしたら大丈夫になった。

よくよく考えてみれば、あたりまえのことだったかも。
不慣れな状況だと、知っているはずのことが、まったく知らないことのように思えたり、使えなくなったりする。

ここで、ふと疑問に思ったのだけど、

  • 1000000000000
  • 1e12
  • 10**12

で、処理をする早さは変わるのかな?

コンピュータ君の気持ちはまだちゃんと理解できてないなあ。