如何检查我的双变量是不是为整数? [复制]
Posted
技术标签:
【中文标题】如何检查我的双变量是不是为整数? [复制]【英文标题】:How to check my double variable is an integer or not? [duplicate]如何检查我的双变量是否为整数? [复制] 【发布时间】:2019-06-17 20:05:57 【问题描述】:我有一个变量来自:
double result = myList.Count / mySeptum;
我想做以下事情:
if( result == int )
//Do Something...
else
//Do another thing...
我该怎么做?
我也试过了,但没用:
if ( result%10 == 0 )
...
举个例子:
private void button2_Click(object sender, EventArgs e)
int r = 10;
int l = 2;
double d = r / l;
if (d % 10 == 0)
Console.WriteLine("INTEGER");
else
Console.WriteLine("DOUBLE");
【问题讨论】:
因为5 % 10
是 5 而不是 0
Get the decimal part from a double 可能重复如果它没有小数 => 它是一个整数。
您的测试会检查最后一位是否为零。你可以试试if ((r % l) == 0)
应该看看:***.com/questions/2751593/…
你认为1.0e100
是整数吗?请注意,1e100 == 10...0 (100 zeroes)
超出 int.MaxValue
【参考方案1】:
例如:
double d = 1.0;
bool isInt = d == (int)d;
模数:
double d = 1.0;
bool isInt = d % 1 == 0;
【讨论】:
【参考方案2】:一般来说,计算机上的浮点数不能代表每个实数,只能代表一些离散值。因此,仅对于少数整数,双精度数可能在数学上与整数值相同。对于大多数整数来说,最接近的双精度数会少一些。因此,如果您正在寻找完全匹配,这将不起作用。
但是,您可以做的是将您的双精度转换为整数,并检查双精度和整数之间的差异是否足够小:
double d = 1.5;
int i = (int) d;
double diff = d - i;
if (diff < 1.0e-6)
std::cout << "number is close to integer" << std::endl;
【讨论】:
【参考方案3】:如何检查我的双变量是否为整数?
从 C 的角度来看(因为帖子最初被标记): (我确信 C# 具有等效的功能。)
要确定double
是否为整数,请使用modf()
返回小数部分。
#include <math.h>
double x = ....;
double ipart;
if (isfinite(x) && modf(x, &ipart) == 0.0)
// value is a whole number
....
进一步测试是否在int
范围内
if (ipart >= INT_MIN && ipart <= INT_MAX)
int i = (int) ipart;
为了检查更宽的整数类型,我们需要一些技巧来确保在形成限制时不会出现舍入错误。代码利用INT..._MAX
是Mersenne numbers
#define INT64_MAX_P1 ((INT64_MAX/2 + 1)*2.0)
if (ipart >= INT64_MIN && ipart < INT64_MAX_P1)
int64_t i64 = (int64_t) ipart;
【讨论】:
【参考方案4】:尝试使用 typeOf:
if (myInt.GetType() == typeof(int))
【讨论】:
如果它是一个双变量,它永远不会有int
的类型。以上是关于如何检查我的双变量是不是为整数? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Python 在 Selenium WD 中检查变量的值是不是为整数? [复制]