私はこの小さなコードを持っています
double s = -2.6114289999999998;
double s7 = Math.Round(s, 7);
double s5 = Math.Round(s, 5);
double s6 = Math.Round(s, 6);
プラットフォーム=任意のCPUを使用すると、
s7: -2.611429
s5: -2.61143
s6: -2.611429
Platform = x64の場合、次のようになります。
s7: -2.6114289999999998
s5: -2.61143
s6: -2.6114289999999998
どうして?(VSの[ローカル]ウィンドウからコピーされた出力)
コード全体は次のとおりです。
private void btnAlign_Click(object sender, EventArgs e)
{
double s = -2.6114289999999998;
double s7 = Math.Round(s, 7);
double s5 = Math.Round(s, 5);
double s6 = Math.Round(s, 6);
}
-2.611429
64ビット浮動小数点を使用して値を表すことはできません。32ビットモードでコンパイルする場合、値は代わりに80ビット(拡張精度)を使用します。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加