Open ryuchan00 opened 5 years ago
⋊> ~/basic_programing on master ◦ ruby 1/6_a.rb 20:50:56
0.1234500000000000596855898038484156131744384765625
1.23450000000246973286266438663005828857421875e-06
1.0012345000000000272422084890422411262989044189453125
1.0000000001234499169555647313245572149753570556640625
1
活動内容報告 #01 学籍番号:1920031 氏名:山川竜太郎 ペア学籍番号・氏名(または「個人作業」):1920031・山川竜太郎 提出日付:2019/10/07
[作成したプログラム] 課題6の情報落ち、桁落ちを実現させるプログラムを書きました。
def kadai6(a, b, op)
printf("%.100g\n", eval("#{a} #{op} #{b}"))
end
# 桁落ち
kadai6(1.12345, 1.0, '-')
kadai6(1.1234512345, 1.12345, '-')
# 情報落ち
kadai6(1.0, 0.0012345,'+')
kadai6(1.0, 0.00000000012345,'+')
kadai6(1.0, 0.000000000000000000012345,'+')
[実行例]
⋊> ~/basic_programing on master ◦ ruby 1/6_a.rb 20:50:56
0.1234500000000000596855898038484156131744384765625
1.23450000000246973286266438663005828857421875e-06
1.0012345000000000272422084890422411262989044189453125
1.0000000001234499169555647313245572149753570556640625
1
[簡単な説明]
kadai6メソッドは、aとbの数値を渡して、第三引数にオペランドを渡してaとbをオペランドで計算します。結果としては桁落ち、情報落ちがそれぞれ再現できて野ではないかと思います。ただもうちょっと検証が必要な機がします。
[アンケート] Q1. プログラム、って恐そうですか? 第2外国語と比べてどう? 難しいです。
Q2. Ruby言語のプログラムを打ち込んで実行してみて、どのような感想を持ちましたか? Rubyは書きやすいと思います
Q3. リフレクション (今回の授業で分かったこと)・感想・要望をどうぞ。 あまり小数点を扱うことはないので、新鮮でした
すごい。。。 演習6はなにやってるのかすら理解できてません。。。
防備録
くそなので見ないでいただきたい。。。
s = a + b
return s
end
irb(main):001:0> load 'ensyuu3a.rb'
=> true
irb(main):002:0> tashizan 5,5
=> 10
irb(main):003:0> tashizan 15,8
=> 23
irb(main):004:0> tashizan 158,9
=> 167
def kakezan(a,b)
s = a * b
return s
end
irb(main):005:0> load 'ensyuu3a*.rb'
=> true
irb(main):006:0> kakezan 5,5
=> 25
irb(main):007:0> kakezan 15,8
=> 120
irb(main):008:0> kakezan 158,9
=> 1422
def hikizan(a,b)
s = a - b
return s
end
irb(main):009:0> load 'ensyuu3a-.rb'
=> true
irb(main):010:0> hikizan 5,5
=> 0
irb(main):011:0> hikizan 15,8
=> 7
irb(main):012:0> hikizan 158,9
=> 149
def warizan(a,b)
s = a / b
return s
end
irb(main):013:0> load 'ensyuu3awaru.rb'
=> true
irb(main):014:0> warizan 5,5
=> 1
irb(main):015:0> warizan 15,8
=> 1
irb(main):016:0> warizan 158,9
=> 17
[i1920003@itc050 ~/fp19]$ irb
irb(main):001:0> load 'ensyuu3a.rb'
SyntaxError: ensyuu3a.rb:1: syntax error, unexpected tINTEGER, expecting ')'
def tashizan(5,5)
^
from (irb):1:in `load'
from (irb):1
from /usr/bin/irb:12:in `<main>'
irb(main):002:0> quit
[i1920003@itc050 ~/fp19]$ irb
irb(main):001:0> load 'ensyuu3a.rb'
SyntaxError: ensyuu3a.rb:1: syntax error, unexpected tINTEGER, expecting ')'
def tashizan(5,5)
^
from (irb):1:in `load'
from (irb):1
from /usr/bin/irb:12:in `<main>'
irb(main):002:0> quit
[i1920003@itc050 ~/fp19]$ irb
irb(main):001:0> load 'ensyuu3a.rb'
=> true
irb(main):002:0> tashizan 5,5
=> 10
irb(main):003:0> tashizan 15,8
=> 23
irb(main):004:0> tashizan 158,9
=> 167
irb(main):005:0> load 'ensyuu3a*.rb'
=> true
irb(main):006:0> kakezan 5,5
=> 25
irb(main):007:0> kakezan 15,8
=> 120
irb(main):008:0> kakezan 158,9
=> 1422
irb(main):009:0> load 'ensyuu3a-.rb'
=> true
irb(main):010:0> hikizan 5,5
=> 0
irb(main):011:0> hikizan 15,8
=> 7
irb(main):012:0> hikizan 158,9
=> 149
irb(main):013:0> load 'ensyuu3awaru.rb'
=> true
irb(main):014:0> warizan 5,5
=> 1
irb(main):015:0> warizan 15,8
=> 1
irb(main):016:0> warizan 158,9
=> 17
irb(main):017:0>
ensyuu3a.rb
、アップロードしちゃいましょう
トップページの upload file
とか選択すれば、上げられますよ!!
そのうちGitとGitHubの使い方もやりたいですねー(授業でやってほしい)
@hayato0718
このしょっぱいコードを上げるのは恥ずかしいです。。。
GitHubの使い方、講義でやって頂けたら嬉しいですね! より理解が深まりそう。
丸め誤差
irb(main):021:0> printf("%.20g\n", 0.9/10.0)
0.089999999999999996669
=> nil
irb(main):022:0> printf("%.20g\n", 0.9*0.1)
0.090000000000000010547
=> nil
irb(main):023:0>
よーし