2017-04-23 43 views

回答

1

精密您可以使用此:

double x = 25.001; 
int i = (int) x; 
System.out.println(x);//Input 
if (x - i <= 0.01) { 
    x = (int) x; 
} 
System.out.println(x);//Output 

结果

Input    Output 
25.001    25.0 
25.011    25.011 

如果你想使用第二个变量可以使用:

int y = 0; 
if (x - i <= 0.01) {  
    y = (int) x; 
} 

注意

但要注意,如果你输入的是不正确的,你总是会得到0,我喜欢的第一个解决方案是第二个是好的。

0

如果(X-的Integer.parseInt(X)> = 0.001) //转换这里

0

圆润的,你再不能在double存储数量,作为double总是一个近似的实际值 - 一系列(负)2的幂。

所以你应该去做BigDecimal尽可能多的人想做财务软件。

如果你不喜欢的东西:

double adjustWhenCloseToInt(double x) { 
    long n = Math.round(x); // Could overflow for large doubles 
    if (Math.abs(x - n) < 0.01) { 
     x = n; 
    } 
    return x; 
} 

简单

x = adjustWhenCloseToInt(x); 
System.out.print(x); 

是否仍打印0.00000001或此类。

的解决方案有

System.out.printf("%.2f", x); 

或者更好的使用本地化的MessageFormat(千位分隔符和等)。由于浮点总是有舍入误差,我一般会去BigDecimal,尽管它是一个间接使用的类。小心使用String构造:

new BigDecimal("3.99"); 

当他们再能保持2