如何检查输入值是整数还是浮点数?
假设312/100 = 3.12,这里我需要检查3.12是浮点数还是整数。
答案 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