How to check whether input value is integer or float?

前端 未结 8 796
庸人自扰
庸人自扰 2020-12-13 05:44

How to check whether input value is integer or float?

Suppose 312/100=3.12 Here i need check whether 3.12 is a float value or integer value, i.e., without any decimal

相关标签:
8条回答
  • 2020-12-13 06:15

    Math.round() returns the nearest integer to your given input value. If your float already has an integer value the "nearest" integer will be that same value, so all you need to do is check whether Math.round() changes the value or not:

    if (value == Math.round(value)) {
      System.out.println("Integer");
    } else {
      System.out.println("Not an integer");
    }
    
    0 讨论(0)
  • 2020-12-13 06:20

    You should check that fractional part of the number is 0. Use

    x==Math.ceil(x)
    

    or

    x==Math.round(x)
    

    or something like that

    0 讨论(0)
  • 2020-12-13 06:20

    You can use RoundingMode.#UNNECESSARY if you want/accept exception thrown otherwise

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

    If this rounding mode is specified on an operation that yields an inexact result, an ArithmeticException is thrown.

    Exception if not integer value:

    java.lang.ArithmeticException: Rounding necessary
    
    0 讨论(0)
  • 2020-12-13 06:22

    How about this. using the modulo operator

    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");
    }
    
    0 讨论(0)
  • 2020-12-13 06:22

    Do this to distinguish that.

    If for example your number is 3.1214 and stored in num but you don't know kind of num:

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

    In this example we see that num is not integer.

    0 讨论(0)
  • 2020-12-13 06:26

    The ceil and floor methods will help you determine if the number is a whole number.

    However if you want to determine if the number can be represented by an int value.

    if(value == (int) value)
    

    or a long (64-bit integer)

    if(value == (long) value)
    

    or can be safely represented by a float without a loss of precision

    if(value == (float) value)
    

    BTW: don't use a 32-bit float unless you have to. In 99% of cases a 64-bit double is a better choice.

    0 讨论(0)
提交回复
热议问题