如何判断小数或双精度值是整数?
例如:
decimal d = 5.0; // Would be true decimal f = 5.5; // Would be false
要么
double d = 5.0; // Would be true double f = 5.5; // Would be false
我想知道的原因是,这样我就可以以编程方式确定是否要使用.ToString("N0")或输出值.ToString("N2")。如果没有小数点值,那么我不想显示出来。
.ToString("N0")
.ToString("N2")
对于浮点数,n % 1 == 0通常是检查小数点后是否还有其他内容的方法。
n % 1 == 0
public static void Main (string[] args) { decimal d = 3.1M; Console.WriteLine((d % 1) == 0); d = 3.0M; Console.WriteLine((d % 1) == 0); }
输出:
False True
更新: 如下面的@Adrian Lopez所述,与较小的值进行比较epsilon将丢弃浮点计算错误的计算。由于问题是关于double值的,因此下面是一个更 浮点计算证明的 答案:
epsilon
double
Math.Abs(d % 1) <= (Double.Epsilon * 100)