入力値が整数か浮動小数点かを確認する方法は?
312/100 = 3.12の場合、3.12が浮動小数点か整数かを確認する必要があります。
数値の小数部が0であることを確認する必要があります。
x==Math.ceil(x)
または
x==Math.round(x)
またはそのようなもの
これはどう。モジュロ演算子を使用する
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");
}
Ceilおよびfloorメソッドは、数値が整数かどうかを判断するのに役立ちます。
ただし、数値をint値で表すことができるかどうかを判断する場合。
if(value == (int) value)
またはlong(64ビット整数)
if(value == (long) value)
または、精度を落とすことなく、フロートで安全に表すことができます
if(value == (float) value)
ところで:あなたがする必要がない限り、32ビットのフロートを使用しないでください。 99%のケースでは、64ビットの倍精度がより良い選択です。
Math.round()
は、指定された入力値に最も近い整数を返します。あなたのフロートが既に整数値を持っている場合、「最も近い」整数は同じ値になるので、あなたがする必要があるのはMath.round()
が値を変更するかどうかをチェックすることだけです:
if (value == Math.round(value)) {
System.out.println("Integer");
} else {
System.out.println("Not an integer");
}
また:
(value % 1) == 0
動作します!
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");
}
}
これを区別して区別してください。
たとえば、番号が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。#UNNECESSARY を使用できます。
new BigDecimal(value).setScale(2, RoundingMode.UNNECESSARY);
この丸めモードが不正確な結果をもたらす操作で指定された場合、ArithmeticExceptionがスローされます。
整数値でない場合の例外:
Java.lang.ArithmeticException: Rounding necessary