差分

ナビゲーションに移動 検索に移動

.NETのfloat.Epsilon定数は計算機イプシロンではない

19 バイト追加, 2018年8月14日 (火) 02:45
編集の要約なし
== 解決 ==
「奥村晴彦『C言語による最新アルゴリズム事典』技術評論社,1991年,ISBN4-87408-414-1,2400円」という書籍に[[計算機イプシロン]]を動的に求める[[アルゴリズム]]が詳細に解説されており、また[[ソースコード]]は公式サイトにおいても配布されている。この本は非常に面白いので迷わず買え。個人的にはこの手の技術書を買う際に目次と技術評論社という名前だけで信頼して買うようになった一冊である。
 
https://oku.edu.mie-u.ac.jp/~okumura/algo/
速攻でC速攻で[[C言語]]からC#に[[移植]]した(ほぼコピペしただけ)。した(ほぼ[[コピペ]]しただけ)。<source lang="csharp">
using System;
</source>
計算機イプシロンの定番の[[アルゴリズム]]といえば、変数をひたすら2で割り続け、ゼロになった瞬間のひとつ前を捉えるというもの。「1以上」という条件はコンピューターの指数と仮数の組み合わせで表現される浮動小数点数では、1未満だと指数部だけを使ってどこまでも小さくなってしまうためであり、なんとしても仮数部を使おうということらしい。といえば、変数をひたすら2で割り続け、ゼロになった瞬間のひとつ前を捉えるというもの。「1以上」という条件はコンピューターの指数と仮数の組み合わせで表現される浮動小数点数では、1未満だと指数部だけを使ってどこまでも小さくなってしまうためであり、なんとしても仮数部を使おうということらしい。<source>
static double MachineEpsilon()
{
匿名利用者

案内メニュー