首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何判断小数/双精度数是否为整数?

如何判断小数/双精度数是否为整数?
EN

Stack Overflow用户
提问于 2010-05-02 05:25:25
回答 13查看 235K关注 0票数 261

如何判断十进制值或双精度值是否为整数?

例如:

代码语言:javascript
复制
decimal d = 5.0; // Would be true
decimal f = 5.5; // Would be false

代码语言:javascript
复制
double d = 5.0; // Would be true
double f = 5.5; // Would be false

我之所以想知道这一点,是因为我可以通过编程来确定是使用.ToString("N0")还是.ToString("N2")输出值。如果没有小数点的值,那么我不想显示它。

EN

回答 13

Stack Overflow用户

发布于 2010-05-02 05:31:00

有许多方法可以做到这一点。例如:

代码语言:javascript
复制
double d = 5.0;
bool isInt = d == (int)d;

你也可以使用模数。

代码语言:javascript
复制
double d = 5.0;
bool isInt = d % 1 == 0;
票数 52
EN

Stack Overflow用户

发布于 2010-05-02 05:34:45

虽然所提出的解决方案似乎对简单的示例有效,但一般来说,这样做不是一个好主意。数字可能不完全是整数,但当您尝试对其进行格式化时,它与整数非常接近,因此得到的结果是1.000000。如果您进行的计算在理论上应该正好是1,但实际上由于舍入误差而给出的数字非常接近但并不完全等于1,则可能会发生这种情况。

相反,首先格式化它,如果字符串以句点结尾,后面跟着零,那么就去掉它们。也有一些格式可以自动使用去掉尾随零。这对你的目的来说可能已经足够了。

代码语言:javascript
复制
double d = 1.0002;
Console.WriteLine(d.ToString("0.##"));
d = 1.02;
Console.WriteLine(d.ToString("0.##"));

输出:

代码语言:javascript
复制
1
1.02
票数 12
EN

Stack Overflow用户

发布于 2010-05-02 05:27:41

代码语言:javascript
复制
bool IsInteger(double num) {
    if (ceil(num) == num && floor(num) == num)
        return true;
    else
        return false;
}

索尔沃的问题。

编辑: Mark Rushakoff的Pwned。

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2751593

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档