检查浮点数是否包含小数

时间:2011-01-12 11:48:51

标签: floating-point decimal

如何检查浮点数是否包含小数,如2.10,2.45,12382.66而不是2.00,12382.00。我想知道这个数字是否“圆”。我怎么能以编程方式做到这一点?

7 个答案:

答案 0 :(得分:45)

使用模数将起作用:

if(num % 1 != 0) do something!
// eg. 23.5 % 1 = 0.5

答案 1 :(得分:7)

我将此c函数用于目标c

BOOL CGFloatHasDecimals(float f) {
    return (f-(int)f != 0);
}

答案 2 :(得分:5)

如果您只关心两位小数,请通过计算bool hasDecimals = (((int)(round(x*100))) % 100) != 0;

获取余数

在一般情况下,按照this topic中的描述获取小数部分,并将其与0进行比较。

答案 3 :(得分:3)

你可以这样做:

  float num = 23.345f;
  int intpart = (int)num;
  float decpart = num - intpart;
  if(decpart == 0.0f)
  {
    //Contains no decimals
  }
  else
  {
     //Number contains decimals
  }

答案 4 :(得分:2)

import java.lang.Math;
public class Main {
    public static void main(String arg[]){
        convert(50.0f);
        convert(13.59f);

    }

    private static void convert(float mFloat){
        if(mFloat - (int)mFloat != 0)
            System.out.println(mFloat);
        else
            System.out.println((int)mFloat);
    }
}

答案 5 :(得分:0)

PHP解决方案:

function hasDecimals($x)
{
    return floatval($x) - intval($x) != 0;
}

答案 6 :(得分:0)

Scala 中,您可以使用isWhole()isValidInt()来检查数字是否不包含小数部分:

object Example {
  def main(args: Array[String]) = {

    val hasDecimals = 3.14.isWhole //false
    val hasDecimals = 3.14.isValidInt//false

  }
}