如何检查输入值是整数还是浮点数?

发布于 2024-10-12 08:25:28 字数 79 浏览 4 评论 0原文

如何检查输入值是整数还是浮点数?

假设312/100=3.12 这里我需要检查 3.12 是浮点值还是整数值,即没有任何小数位值。

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 place value.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(8

摘星┃星的人 2024-10-19 08:25:28

您应该检查数字的小数部分是否为 0。
使用

x==Math.ceil(x)

x==Math.round(x)

或类似的东西

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

失退 2024-10-19 08:25:28

这个怎么样。使用模运算符

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");
}

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");
}
旧夏天 2024-10-19 08:25:28

ceil 和 Floor 方法将帮助您确定数字是否为整数。

但是如果你想确定数字是否可以用 int 值表示。

if(value == (int) value)

或一个长(64 位整数),

if(value == (long) value)

或者可以安全地用浮点数表示,而不会损失精度

if(value == (float) value)

顺便说一句:除非必须,否则不要使用 32 位浮点数。在 99% 的情况下,64 位双精度型是更好的选择。

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.

青柠芒果 2024-10-19 08:25:28

另外:

(value % 1) == 0

会起作用!

Also:

(value % 1) == 0

would work!

空‖城人不在 2024-10-19 08:25:28

Math.round( ) 返回最接近给定输入值的整数。如果您的浮点数已经有一个整数值,那么“最近的”整数将是相同的值,因此您需要做的就是检查 Math.round() 是否更改该值:

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

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");
}
寒江雪… 2024-10-19 08:25:28

您可以使用 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");
     }
}

You can use Scanner Class to find whether a given number could be read as Int or Float type.

 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");
     }
}
七颜 2024-10-19 08:25:28

这样做是为了区分这一点。

例如,如果您的数字是 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 不是整数。

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.

ヤ经典坏疍 2024-10-19 08:25:28

您可以使用 RoundingMode.#UNNECESSARY 如果你想要/接受否则抛出的异常

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

如果在产生不精确结果的操作上指定此舍入模式,则会引发 ArithmeticException。

如果不是整数值则异常:

java.lang.ArithmeticException: Rounding necessary

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
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文