タグ

Programmingとmathに関するmoritataのブックマーク (2)

  • RealLib ではじめる誤差ゼロ実数計算 - 2008-09-09 - ひとり勉強会

    RealLib のソースコード読みを始めるはずだったんですが、なんだか全然進んでないので適当なまとめエントリでお茶を濁します! RealLib が普通にかっこよすぎるので紹介しまくりたくなりましたので紹介記事です。 実数計算と誤差 たいていのプログラミング言語の「実数 = 浮動小数点数」の計算には「誤差」があります。たとえばPythonのばあい: Python 2.5 (r25:51908, Sep 19 2006, 09:52:17) [MSC v.1310 32 bit (Intel)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> 0.1 + 0.1 + 0.1 - 0.3 5.5511151231257827e-017 0.1 を 3 回足しても 0.3 にはな

    RealLib ではじめる誤差ゼロ実数計算 - 2008-09-09 - ひとり勉強会
  • Round() 関数は四捨五入関数ではない: ITコンサルタント 市井賢児のメモ

    知っている人は当たり前なネタですが、知らないと素通りしてそのままにしてしまいそうなネタです。 多くの言語に Round() 関数が用意されていますが、これは四捨五入する関数ではなく、「丸め」る関数です。 名前のまんま。 実は私、最近まで「丸め」とは「四捨五入のコンピュータ系方言」くらいに思っていたのですが、実は違いました。もっと広い言葉です。 まず、「丸め」とはある精度以下の数値情報を捨てる処理のことで、「四捨五入」を含みます。他に少なくとも切り上げ、切捨て、そして今回話題にする「偶数丸め」があります。(もっとあるかも知れません) 「偶数丸め」は IEEE 754 で定められており、JIS や ISO にも同じ規定があります。 多くの Round() 関数の挙動もこの IEEE 754 に則った「偶数丸め」です。 「偶数丸め」は四捨五入とほぼ同一ですが、次の1点が違います。 「丸め単位の丁

  • 1