如何判断十进制值或双精度值是否为整数?
例如:
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")
输出值。如果没有小数点的值,那么我不想显示它。
发布于 2010-05-02 05:31:00
有许多方法可以做到这一点。例如:
double d = 5.0;
bool isInt = d == (int)d;
你也可以使用模数。
double d = 5.0;
bool isInt = d % 1 == 0;
发布于 2010-05-02 05:34:45
虽然所提出的解决方案似乎对简单的示例有效,但一般来说,这样做不是一个好主意。数字可能不完全是整数,但当您尝试对其进行格式化时,它与整数非常接近,因此得到的结果是1.000000
。如果您进行的计算在理论上应该正好是1,但实际上由于舍入误差而给出的数字非常接近但并不完全等于1,则可能会发生这种情况。
相反,首先格式化它,如果字符串以句点结尾,后面跟着零,那么就去掉它们。也有一些格式可以自动使用去掉尾随零。这对你的目的来说可能已经足够了。
double d = 1.0002;
Console.WriteLine(d.ToString("0.##"));
d = 1.02;
Console.WriteLine(d.ToString("0.##"));
输出:
1
1.02
发布于 2010-05-02 05:27:41
bool IsInteger(double num) {
if (ceil(num) == num && floor(num) == num)
return true;
else
return false;
}
索尔沃的问题。
编辑: Mark Rushakoff的Pwned。
https://stackoverflow.com/questions/2751593
复制相似问题