裏 RjpWiki

Julia ときどき R, Python によるコンピュータプログラム,コンピュータ・サイエンス,統計学

実数演算と結果の表示

2013年07月24日 | ブログラミング

JavaScript による小数計算の誤差を無くす」なんだけど。

R ではなくて JavaScript の話なので,どうでもいいことなんだけど。

  1. var oldValuenewValuediff;
  2. oldValue = 67;
  3. newValue = 66.9;
  4. diff = oldValue - newValue;
  5. diff = Math.floor(diff * 10) / 10; // 小数点第2位以下切り捨て
  6.  
  7. console.log("今日は" + diff + "kgやせました!");

の結果が 0 になると大騒ぎ。

R は,

> old = 67
> new = 66.9
> (dif = old-new)
[1] 0.1

となる。ちゃんと丸めが行われる。

しかし,以下のように無理矢理やると,それはね。JavaScript と同じ結果になりますよ。

> floor(dif*10)/10
[1] 0

そうではなくて,

> floor(dif*10+0.5)/10
[1] 0.1

とやるのが,数値計算の定石。R の print は,これをもう少しスマートにやってくれているということ。

コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« 疑似相関 | トップ | ダメ出し:Excel 使うな! »
最新の画像もっと見る

コメントを投稿

ブログラミング」カテゴリの最新記事