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.
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
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");
}
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.
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");
}
Également:
(value % 1) == 0
travaillerait!
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");
}
}
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.
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