Подтвердить что ты не робот

Как проверить, имеет ли float целочисленное значение

Как проверить, является ли входное значение целым или плавающим?

Предположим, что 312/100 = 3.12. Здесь мне нужно проверить, является ли 3.12 float или integer.

4b9b3361

Ответ 1

Вы должны проверить, что дробная часть номера равна 0. Используйте

x==Math.ceil(x)

или

x==Math.round(x)

или что-то в этом роде

Ответ 2

Как насчет этого. используя оператор 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");
}

Ответ 3

Потолочные и напольные методы помогут вам определить, является ли число целым числом.

Однако, если вы хотите определить, может ли число быть представлено значением int.

if(value == (int) value)

или длинное (64-разрядное целое число)

if(value == (long) value)

или может быть безопасно представлен поплавком без потери точности

if(value == (float) value)

BTW: не используйте 32-битное поплавок, если вам не нужно. В 99% случаев лучшим вариантом является 64-битный double.

Ответ 4

Math.round() возвращает ближайшее целое число к заданному вами входному значению. Если у вашего числа с плавающей точкой уже есть целочисленное значение, то "ближайшим" целым будет то же самое значение, поэтому все, что вам нужно сделать, это проверить, изменяет ли Math.round() значение или нет:

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

Ответ 5

также:

(value % 1) == 0

будет работать!

Ответ 6

Вы можете использовать класс сканера, чтобы узнать, может ли данный номер считываться как тип 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");
     }
}

Ответ 7

Сделайте это, чтобы отличить это.

Если, например, ваш номер равен 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 не является целым.

Ответ 8

Вы можете использовать RoundingMode. # НЕОБХОДИМО, если вы хотите/принимаете исключение, выданное в противном случае

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

Если этот режим округления указан для операции, которая дает неточный результат, возникает исключение ArithmeticException.

Исключение, если не целочисленное значение:

java.lang.ArithmeticException: Rounding necessary