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

问题描述 投票:51回答:8

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

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

java floating-point int rounding
8个回答
40
投票

你应该检查数字的小数部分是0.使用

x==Math.ceil(x)

要么

x==Math.round(x)

或类似的东西


22
投票

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

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

16
投票

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

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

if(value == (int) value)

或长(64位整数)

if(value == (long) value)

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

if(value == (float) value)

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


13
投票

Math.round()返回给定输入值的最近整数。如果你的浮点数已经有一个整数值,那么“最接近的”整数将是相同的值,所以你需要做的就是检查Math.round()是否改变了这个值:

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

11
投票

也:

(value % 1) == 0

会工作!


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

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不是整数。


0
投票

如果你想要/接受抛出异常,你可以使用RoundingMode.#UNNECESSARY

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

如果在产生不精确结果的操作上指定了此舍入模式,则抛出ArithmeticException。

如果不是整数值则异常:

java.lang.ArithmeticException: Rounding necessary
© www.soinside.com 2019 - 2024. All rights reserved.