小さな負の数を四捨五入すると、0 に丸められます。例: decimal.Round(-0.001M, 2)
0 を返します。
ゼロに丸められた場合、どうすれば符号を取得できますか。n<0
チェックして丸めを行う以外に良い方法はありますか?
ビットの比較は、10 進数でも機能します。@JonSkeetのおかげで、そうでなければ私はこのトリックを知りませんでした。
var d = decimal.Round(-0.001M, 2);
bool isNegativeZero = d == decimal.Zero && decimal.GetBits(d).Last() < 0;
デモはこちら