我试图美化一个程序,如果它是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)
| 归档时间: |
|
| 查看次数: |
28245 次 |
| 最近记录: |