2017-04-23 42 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