「.NETのfloat.Epsilon定数は計算機イプシロンではない」の版間の差分

imported>Administrator
編集の要約なし
imported>Administrator
編集の要約なし
1行目: 1行目:
C#においてfloat型(Single型)の[[絶対値]]をfloat.Epsilon定数と比較している箇所の挙動がどうもおかしい。
C#においてfloat型(Single型)の[[絶対値]]をfloat.Epsilon定数と比較している箇所の挙動がどうもおかしい。


== 原因 ==
[[ググって]][[MSDN]]を見るとサラッと絶望的なひとことメモが。
[[ググって]][[MSDN]]を見るとサラッと絶望的なひとことメモが。
  The value of the F:System.Single.Epsilon property is not equivalent to machine epsilon,  
  The value of the F:System.Single.Epsilon property is not equivalent to machine epsilon,  
7行目: 8行目:


要約すると「浮動小数点演算の丸の相対誤差の上限(丸め誤差発生時にズレるであろう最大値)」であり「[[計算機イプシロン]]」ではない。
要約すると「浮動小数点演算の丸の相対誤差の上限(丸め誤差発生時にズレるであろう最大値)」であり「[[計算機イプシロン]]」ではない。
名前紛らわしすぎだろ。
名前紛らわしすぎだろ。


== 解決 ==
「奥村晴彦『C言語による最新アルゴリズム事典』技術評論社,1991年,ISBN4-87408-414-1,2400円」という書籍に[[計算機イプシロン]]を動的に求める[[アルゴリズム]]が詳細に解説されており、また[[ソースコード]]は公式サイトにおいても配布されている。この本は非常に面白いので迷わず買え。
「奥村晴彦『C言語による最新アルゴリズム事典』技術評論社,1991年,ISBN4-87408-414-1,2400円」という書籍に[[計算機イプシロン]]を動的に求める[[アルゴリズム]]が詳細に解説されており、また[[ソースコード]]は公式サイトにおいても配布されている。この本は非常に面白いので迷わず買え。
https://oku.edu.mie-u.ac.jp/~okumura/algo/
https://oku.edu.mie-u.ac.jp/~okumura/algo/