如何检查float是否具有整数值

时间:2011-01-18 18:19:33

标签: java floating-point int rounding

如何检查输入值是整数还是浮点数?

假设312/100 = 3.12,这里我需要检查3.12是浮点数还是整数。

8 个答案:

答案 0 :(得分:40)

您应该检查该数字的小数部分是否为0。 使用

x==Math.ceil(x)

x==Math.round(x)

或类似的东西

答案 1 :(得分:20)

这个怎么样?使用模运算符

if(a%b==0) 
{
    System.out.println("b is a factor of a. i.e. the result of a/b is going to be an integer");
}
else
{
    System.out.println("b is NOT a factor of a");
}

答案 2 :(得分:16)

ceil和floor方法将帮助您确定数字是否为整数。

但是,如果要确定数字是否可以用int值表示。

if(value == (int) value)

或长(64位整数)

if(value == (long) value)

或者可以安全地用浮点表示而不会损失精度

if(value == (float) value)

BTW:除非必须,否则不要使用32位浮点数。在99%的情况下,64位双倍是更好的选择。

答案 3 :(得分:12)

if (value == Math.round(value)) {
    System.out.println("Integer");
} else {
    System.out.println("Not an integer");
}

答案 4 :(得分:10)

此外:

(value % 1) == 0

会工作!

答案 5 :(得分:3)

您可以使用扫描仪类来查找给定数字是否可以读取为Int或Float类型。

 import java.util.Scanner;
 public class Test {
     public static void main(String args[] ) throws Exception {

     Scanner sc=new Scanner(System.in);

     if(sc.hasNextInt())
         System.out.println("This input is  of type Integer");
     else if(sc.hasNextFloat())
         System.out.println("This input is  of type Float");
     else
         System.out.println("This is something else");
     }
}

答案 6 :(得分:2)

这样做可以区分它。

例如,如果您的号码是3.1214并存储在num中,但您不知道num:

的种类
num = 3.1214
// cast num to int
int x = (int)num;
if(x == num)
{
  // num is a integer
} 
else
  // num is float
}

在这个例子中,我们看到num不是整数。

答案 7 :(得分:0)

如果您希望/接受否则引发异常,则可以使用RoundingMode.#UNNECESSARY

new BigDecimal(value).setScale(2, RoundingMode.UNNECESSARY);
  

如果在产生不精确结果的操作上指定了这种舍入模式,则会引发ArithmeticException。

如果不是整数值,则异常:

java.lang.ArithmeticException: Rounding necessary