java判断浮点数为整数_java-如何检查浮点数是否具有整数值

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值