如何检查我的双变量是不是为整数? [复制]

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 中检查变量的值是不是为整数? [复制]

如何检查变量是不是为整数

Twig - 如何检查变量是不是为数字/整数

如何检查变量是不是未设置并在我的 bash 前奏中使用 set -u? [复制]

PHP检查变量是不是为整数

在 C# 中检查 double 是不是为整数的好方法是啥? [复制]