web-dev-qa-db-fra.com

Comment vérifier si un float a une valeur entière

Comment vérifier si la valeur d'entrée est un entier ou un flottant?

Supposons 312/100 = 3.12, il me faut ici vérifier si 3.12 est float ou integer.

52
user569125

Vous devez vérifier que la partie décimale du nombre est 0. Utilisez

x==Math.ceil(x)

ou

x==Math.round(x)

ou quelque chose comme ça

41
Alex

Que dis-tu de ça. en utilisant l'opérateur 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");
}
22
Aravind R. Yarram

Les méthodes plafond et plancher vous aideront à déterminer si le nombre est un nombre entier.

Toutefois, si vous souhaitez déterminer si le nombre peut être représenté par une valeur int.

if(value == (int) value)

ou un long (entier de 64 bits)

if(value == (long) value)

ou peut être représenté en toute sécurité par un flotteur sans perte de précision

if(value == (float) value)

BTW: n'utilisez pas de float 32 bits à moins que vous n'ayez à le faire. Dans 99% des cas, un double 64 bits est un meilleur choix.

16
Peter Lawrey

Math.round() renvoie l'entier le plus proche de votre valeur d'entrée donnée. Si votre float a déjà une valeur entière, l'entier "le plus proche" sera la même valeur, il vous suffit donc de vérifier si Math.round() change la valeur ou non:

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

Également:

(value % 1) == 0

travaillerait!

11
Farshid Zaker

Vous pouvez utiliser Scanner Class pour déterminer si un nombre donné peut être lu en tant que type Int ou 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
Lalit kumar

Faites ceci pour distinguer cela.

Si, par exemple, votre numéro est 3.1214 et stocké sous num mais que vous ne connaissez pas le type de num:

num = 3.1214
// cast num to int
int x = (int)num;
if(x == num)
{
  // num is a integer
} 
else
  // num is float
}

Dans cet exemple, nous voyons que num n'est pas un entier.

2
Mahdi_Nine

Vous pouvez utiliser RoundingMode. # UNNECESSARY si vous voulez/acceptez une exception levée sinon

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

Si ce mode d'arrondi est spécifié pour une opération donnant un résultat inexact, une exception ArithmeticException est levée.

Exception si pas une valeur entière:

Java.lang.ArithmeticException: Rounding necessary
0
user7294900