如何得到 - 0为圆形小负数?

时间:2013-10-30 09:57:52

标签: c# rounding

当我舍入一个小的负数时,它会四舍五入为0。 例如:decimal.Round(-0.001M, 2)返回0.

如果将其四舍五入为零,我该如何获得该符号。除了检查n<0然后进行回合之外,还有其他更好的方法吗?

2 个答案:

答案 0 :(得分:2)

比较这些位也适用于十进制。感谢@JonSkeet,否则我从来不知道这个技巧。

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

以下是Demo

答案 1 :(得分:1)

  

还有其他更好的方法,而不是检查n&lt; 0然后进行回合?

简单的答案是“不”。这是最直接的方式。除非你有充分的理由编写比这更复杂的代码(你在问题中没有提到),否则不要这样做。您(或其他开发人员)最终会在几天或几个月后回到此代码,并想知道为什么代码是以这种方式编写的。