java - 检查一个数字是 double 还是 int

标签 java double int

我试图通过显示 1.2 来美化程序,如果它是 1.2,如果它是 1,则显示 1 问题是我将数字作为 double 存储到数组列表中。如何检查数字是 double 型还是整数型?

最佳答案

好吧,你可以使用:

if (x == Math.floor(x))

甚至:

if (x == (long) x) // Performs truncation in the conversion

如果条件为真,即执行 if 语句的主体,则该值为整数。否则,它不是。

请注意,这会将 1.00000000001 视为仍然是 double 值 - 如果这些值已经计算(因此可能只是“非常接近”整数值),您可能需要添加一些公差.另请注意,对于非常大的整数,这将开始失败,因为无论如何它们都不能在 double 中准确表示 - 如果您是,您可能需要考虑使用 BigDecimal处理范围非常广泛。

编辑:有更好的方法来解决这个问题 - 使用 DecimalFormat 你应该能够让它只可选产生小数点。例如:

import java.text.*;

public class Test
{
    public static void main(String[] args)
    {
        DecimalFormat df = new DecimalFormat("0.###");

        double[] values = { 1.0, 3.5, 123.4567, 10.0 };

        for (double value : values)
        {
            System.out.println(df.format(value));
        }
    }
}

输出:

1
3.5
123.457
10

关于java - 检查一个数字是 double 还是 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7297975/

相关文章:

java - 查找数组中有多少个不同的值

java - javax.servlet.GenericServlet.getServletContext 的 NullPointerException(GenericServlet.java :205)

java - Java 中 Double 的运算符 +=

xcode - NSTimer:浮点值无法转换为 UInt8,因为它大于 UInt8.max

java - 如何使用 Bluemix Liberty 运行时将 EntityManager 注入(inject) EJB 中?

c++ - 在 C++ 中将 double 转换为 (IEEE 754) 64 位二进制字符串表示形式

gdb 中的 C++ static_cast 返回与 gcc 不同的结果

c++ - 在 C++03 中将字符串转换为 int

PHP 类型转换为整数

java - Jframe中上下移动,如何做升降?