私は、SQL Decimal (38,30) に由来する C# の 10 進数の精度と戦ってきました。ここで明らかなことを見落としている可能性があることはわかっていますが、少し洞察が必要です。
私が抱えている問題は、C# が一貫した出力と見なすものを生成しないことです。
decimal a = 0.387518769125m;
decimal b = 0.3875187691250002636113061835m;
Console.WriteLine(Math.Round(a, 11));
Console.WriteLine(Math.Round(b, 11));
Console.WriteLine(Math.Round(a, 11) == Math.Round(b, 11));
収量
0.38751876912
0.38751876913
False
ええと、0.38751876913? 本当に?ここで何が欠けていますか?
MSDNから:
小数点以下の桁が奇数の場合、偶数桁に変更されます。それ以外の場合は変更されません。
一貫性のない結果が表示されるのはなぜですか? 追加の精度は、「小数点以下の桁数」を変更していません...