5

小さな負の数を四捨五入すると、0 に丸められます。例: decimal.Round(-0.001M, 2)0 を返します。

ゼロに丸められた場合、どうすれば符号を取得できますか。n<0チェックして丸めを行う以外に良い方法はありますか?

4

2 に答える 2

2

ビットの比較は、10 進数でも機能します。@JonSkeetのおかげで、そうでなければ私はこのトリックを知りませんでした。

var d = decimal.Round(-0.001M, 2);
bool isNegativeZero = d == decimal.Zero && decimal.GetBits(d).Last() < 0;

デモはこちら

于 2013-10-30T10:13:38.977 に答える