检查数字是double还是int

chu*_*ley 5 java double int

我试图美化一个程序,如果它是1.2则显示1.2,如果是1则显示1问题是我将数字存储在arraylist中作为双打.如何检查Number是double还是int?

Jon*_*eet 20

好吧,你可以使用:

if (x == Math.floor(x))
Run Code Online (Sandbox Code Playgroud)

甚至:

if (x == (long) x) // Performs truncation in the conversion
Run Code Online (Sandbox Code Playgroud)

如果条件为真,即if语句的主体执行,则该值为整数.否则,事实并非如此.

请注意,这将查看1.00000000001仍为双 - 如果这些是已计算的值(因此可能只是"非常接近"整数值),您可能需要添加一些容差.另请注意,对于非常大的整数,这将开始失败,因为它们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));
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

输出:

1
3.5
123.457
10
Run Code Online (Sandbox Code Playgroud)

  • +1:floor将数字四舍五入为整数.只有整数不变,所以如果相同,它必须是一个整数.BTW:我认为你的意思是任何整数而不是32位签名的`int`. (2认同)