如何检查我的double变量是否为整数?

时间:2019-01-24 06:39:15

标签: c# asp.net

我有一个变量来自:

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");
    }
}

4 个答案:

答案 0 :(得分:0)

例如:

double d = 1.0;
bool isInt = d == (int)d;

取模:

double d = 1.0;
bool isInt = d % 1 == 0;

答案 1 :(得分:0)

通常,计算机上的浮点数不能代表每个实数,而只能代表一些离散值。因此,仅对于几个整数,双精度有可能在数学上与整数值相同。对于大多数整数,最接近的双精度值将偏离少量。因此,如果您要查找完全匹配的内容,将无法正常工作。

但是,您可以做的是将双精度型转换为整数,检查双精度型和整数之间的差是否足够小:

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;
}

答案 2 :(得分:0)

  

如何检查我的double变量是否为整数?

从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..._MAXMersenne 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; 

答案 3 :(得分:-1)

尝试使用typeOf:

   <script type="text/javascript">
    function showSelected(val)
    {
        document.getElementById('selectedResult').innerHTML =  val;
        return val;
    }
    </script>

    <?php 
     $val = "<script type='text/javascript'>showSelected('argumentValue');</script>";
    ?>