Как проверить, является ли входное значение целым или плавающим?
Предположим, что 312/100 = 3.12. Здесь мне нужно проверить, является ли 3.12 float или integer.
Как проверить, является ли входное значение целым или плавающим?
Предположим, что 312/100 = 3.12. Здесь мне нужно проверить, является ли 3.12 float или integer.
Вы должны проверить, что дробная часть номера равна 0. Используйте
x==Math.ceil(x)
или
x==Math.round(x)
или что-то в этом роде
Как насчет этого. используя оператор modulo
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");
}
Потолочные и напольные методы помогут вам определить, является ли число целым числом.
Однако, если вы хотите определить, может ли число быть представлено значением int.
if(value == (int) value)
или длинное (64-разрядное целое число)
if(value == (long) value)
или может быть безопасно представлен поплавком без потери точности
if(value == (float) value)
BTW: не используйте 32-битное поплавок, если вам не нужно. В 99% случаев лучшим вариантом является 64-битный double.
Math.round()
возвращает ближайшее целое число к заданному вами входному значению. Если у вашего числа с плавающей точкой уже есть целочисленное значение, то "ближайшим" целым будет то же самое значение, поэтому все, что вам нужно сделать, это проверить, изменяет ли Math.round()
значение или нет:
if (value == Math.round(value)) {
System.out.println("Integer");
} else {
System.out.println("Not an integer");
}
также:
(value % 1) == 0
будет работать!
Вы можете использовать класс сканера, чтобы узнать, может ли данный номер считываться как тип 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");
}
}
Сделайте это, чтобы отличить это.
Если, например, ваш номер равен 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 не является целым.
Вы можете использовать RoundingMode. # НЕОБХОДИМО, если вы хотите/принимаете исключение, выданное в противном случае
new BigDecimal(value).setScale(2, RoundingMode.UNNECESSARY);
Если этот режим округления указан для операции, которая дает неточный результат, возникает исключение ArithmeticException.
Исключение, если не целочисленное значение:
java.lang.ArithmeticException: Rounding necessary