java-如何检查浮点数是否具有整数值
如何检查输入值是整数还是浮点数?
假设312/100 = 3.12,在这里我需要检查3.12是浮点数还是整数。
8个解决方案
42 votes
您应该检查数字的小数部分是否为0。采用
x==Math.ceil(x)
要么
x==Math.round(x)
或类似的东西
Alex answered 2020-01-18T11:09:57Z
22 votes
这个怎么样。 使用模运算符
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");
}
Aravind R. Yarram answered 2020-01-18T11:10:17Z
16 votes
ceil和floor方法将帮助您确定数字是否为整数。
但是,如果要确定数字是否可以用int值表示。
if(value == (int) value)
或长整数(64位整数)
if(value == (long) value)
或可以用浮点数安全表示,而不会损失精度
if(value == (float) value)
顺便说一句:除非必须,否则不要使用32位浮点数。 在99%的情况下,使用64位double是更好的选择。
Peter Lawrey answered 2020-01-18T11:10:54Z
13 votes
Math.round()将最接近的整数返回给定的输入值。 如果浮点数已经有一个整数值,那么“最近”整数将是相同的值,因此您所需要做的就是检查Math.round()是否更改该值:
if (value == Math.round(value)) {
System.out.println("Integer");
} else {
System.out.println("Not an integer");
}
Herohtar answered 2020-01-18T11:11:15Z
11 votes
也:
(value % 1) == 0
会工作!
Farshid Zaker answered 2020-01-18T11:11:39Z
3 votes
您可以使用Scanner Class查找给定的数字是否可以读取为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");
}
}
Lalit kumar answered 2020-01-18T11:11:59Z
2 votes
这样做可以区分。
例如,如果您的数字是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不是整数。
Mahdi_Nine answered 2020-01-18T11:12:27Z
0 votes
您可以使用RoundingMode。#UNNECESSARY如果您想/接受抛出异常
new BigDecimal(value).setScale(2, RoundingMode.UNNECESSARY);
如果在产生不精确结果的操作上指定了这种舍入模式,则会引发ArithmeticException。
如果不是整数值,则异常:
java.lang.ArithmeticException: Rounding necessary
user7294900 answered 2020-01-18T11:12:56Z