Math.Round
デフォルトでは銀行の丸めを使用します。別のオプションを指定することで、これを変更できMidPointRounding
ます。MSDNから:
ゼロからの四捨五入
中点の値は、ゼロから離れた次の数値に丸められます。たとえば、3.75ラウンドで3.8、3.85ラウンドで3.9、-3.75ラウンドで-3.8、-3.85ラウンドで-3.9です。この形式の丸めは、MidpointRounding.AwayFromZero列挙型メンバーによって表されます。ゼロからの丸めは、最も広く知られている丸めの形式です。
最も近い値への丸め、または銀行の丸め
中点の値は、最も近い偶数に丸められます。たとえば、3.75と3.85の両方が3.8に丸められ、-3.75と-3.85の両方が-3.8に丸められます。この形式の丸めは、MidpointRounding.ToEven列挙型メンバーによって表されます。
最も近い値への丸めは、財務および統計操作で使用される丸めの標準形式です。IEEE標準754のセクション4に準拠しています。複数の丸め演算で使用すると、中点の値を一方向に一貫して丸めることによって発生する丸め誤差が減少します。場合によっては、この丸め誤差が重大になることがあります。
だから、あなたが欲しいのは:
Math.Round(32.625, 2, MidpointRounding.AwayFromZero)
Math.Round(32.635, 2, MidpointRounding.AwayFromZero)
他の人が述べているように、精度が重要な場合Decimal
は、浮動小数点型ではなく変数を使用する必要があります。例えば:
Math.Round(32.625D, 2, MidpointRounding.AwayFromZero)
Math.Round(32.635D, 2, MidpointRounding.AwayFromZero)