web-dev-qa-db-ja.com

フロートに整数値があるかどうかを確認する方法

入力値が整数か浮動小数点かを確認する方法は?

312/100 = 3.12の場合、3.12が浮動小数点か整数かを確認する必要があります。

52
user569125

数値の小数部が0であることを確認する必要があります。

x==Math.ceil(x)

または

x==Math.round(x)

またはそのようなもの

41
Alex

これはどう。モジュロ演算子を使用する

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

Ceilおよびfloorメソッドは、数値が整数かどうかを判断するのに役立ちます。

ただし、数値をint値で表すことができるかどうかを判断する場合。

if(value == (int) value)

またはlong(64ビット整数)

if(value == (long) value)

または、精度を落とすことなく、フロートで安全に表すことができます

if(value == (float) value)

ところで:あなたがする必要がない限り、32ビットのフロートを使用しないでください。 99%のケースでは、64ビットの倍精度がより良い選択です。

16
Peter Lawrey

Math.round() は、指定された入力値に最も近い整数を返します。あなたのフロートが既に整数値を持っている場合、「最も近い」整数は同じ値になるので、あなたがする必要があるのはMath.round()が値を変更するかどうかをチェックすることだけです:

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

また:

(value % 1) == 0

動作します!

11
Farshid Zaker

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
Lalit kumar

これを区別して区別してください。

たとえば、番号が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が整数ではないことがわかります。

2
Mahdi_Nine

RoundingMode。#UNNECESSARY を使用できます。

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

この丸めモードが不正確な結果をもたらす操作で指定された場合、ArithmeticExceptionがスローされます。

整数値でない場合の例外:

Java.lang.ArithmeticException: Rounding necessary
0
user7294900