言語別の計算誤差に関して、興味が出たのでご教示下さい。
もともとは、別の質問の回答で、小数点以下の誤差が気になり、少し検証してみました。
簡単に言うと、ruby で (33.1 + 34.2) / 2
を計算すると誤差がでるということです。
ruby
1$ irb 2irb(main):001:0> (33.1 + 34.2) / 2 3=> 33.650000000000006
自前の環境で簡単に確認できるモノで試してみました。
bash
1echo "scale=20; (33.1 + 34.2) / 2 " |bc 233.65000000000000000000
php
1php -r "echo ((33.1 + 34.2) / 2);" 233.65
win7標準の電卓アプリ
(33.1 + 34.2) / 2 = 33.65
言語によって、誤差が出るものなのでしょうか?
と質問しようと思って、少し続けて検証してみたところ
php
1php -r "echo number_format((33.1 + 34.2) / 2,20,null,'');" 233.65000000000000568434
javascript
1console.log(((33.1 + 34.2) / 2)); 233.650000000000006
と出ました^^;
各言語の計算で、標準で使う変数の型が違うということなんですかね?
詳しい方、コメントいただければ幸いです。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2016/06/11 21:02