def feet_to_cm(f,i) 30.48*(f+i/12) endとするとなぜか
feet_to_cm(5,11)=152.4となりました。(正しい値は180.34)ほぼ同じ形の式であるpound_to_kgは上手くいったので原因がよく分かりませんでした。
30.48*(f+i/12)fを5に,iを11に置き換えてみると,
30.48*(5+11/12)になりますが,この式を見て何か気が付きませんか?
11/12の部分が整数同士の除算になっているので,答えが整数の0になり,
30.48*5を計算して152.4になってしまったわけです.iが整数でも正しい答えを出すようにするには, feet_to_cmの定義の12を12.0に置き換えて,
30.48*(f+i/12.0)としてみてください.12を12.0に置き換えても,数学的には整数のままですが,プログラム上は「除算の際には実数同士の除算をおこなうように」という指示になります.
1)irb(main):002:0> def distance(x,y,u,v) irb(main):003:1> sqrt((x-u)**2+(y-v)**2) irb(main):004:1> end(1)の作成途中以下のようなエラーが出ました。原因は何なのでしょうか。
irb(main):020:0> def distance(x,y,u,v,) irb(main):021:1> ((x-u)**2+(y-v)**2)**0.5 irb(main):022:1> end SyntaxError: compile error (irb):20: syntax error, unexpected ')' (irb):22: syntax error, unexpected kEND, expecting $end from (irb):22 from :0
distance(x,y,u,v,)となっていますが,vのあとの「,」が余計です.irbは「,」の次に「v」などと同じような名前が来ることを期待(expect)しますが,想定外の「)」が来たので,
(irb):20: syntax error, unexpected ')'というエラーメッセージを出したということになります.
/home08/ktanaka/bin/addRubyMode.rbその結果,
miのRubyモードを使うために,ファイルの転送を行なっています 転送を終了しましたと10秒ほどで終了すれば,コマンドは無事に実行できました.この後で,miを起動 するとRubyモードが使えるようになっているはずです.
の画面が出るので,モードを「Ruby」にして,改行コードを「LF(UNIX)」にして,ウィンドウを閉じてください.以降は,ファイル作成のさいに,「ファイル」->「新規」->「Ruby」で作成すると正しい改行コードが設定されているはずです.
ruby vote.rb 選択肢番号のように使います.