これを十分に調査して、私の前提が完全に的外れでないことを願っています。もしそうなら、そこにいる数学者は私を正すことができます.
私の前提は、 のDouble
ような値は として有効数字 5桁(小数点以下ではありません)12.5
に丸められるべきであるということです。代わりに、次の C# コードを使用すると、次のようになります。12.500
12.5
Double d = 12.5;
Console.WriteLine(d.ToString("G5"));
私の問題を反映しているように見える2007年のこの投稿に出くわしました。実際、一貫性を保つために、これらの例の数値を使用しています。
ここでの私の目標は、次のことをよりよく理解することです。
sig figs の私の理解は数学的に正しいですか? つまり、私の期待は妥当でしょうか、それとも出力 "12.5" は何らかの形で正しいのでしょうか?
これは本当にフレームワークの (非常に長命の) バグですか? もしそうなら、それは修正できますか?
バグだとしたら、どうすればいいですか?実際に返されたsig fig の数を特定するためのハックを作成し、それをパディングしますか? 「G」フォーマット文字列が行うべきことを行うために、独自のコードをロールバックしますか? 私はすでに SO でこの例に出くわしているので、おそらくそれはクリーンなオプションが存在しないという証拠です。
さらに、ストレージの問題Double
がこの問題の丸めの側面に悪影響を与える可能性があることを認識していますが、今のところ、元の数字よりも多くの sig fig の問題にのみ関心があります。
編集: フレームワーク 4.5 までこれをテストしました。