2012-08-03 63 views

回答

8

嘗試

double roundTwoDecimals(double d) 
{ 
    DecimalFormat twoDForm = new DecimalFormat("#.####"); 
    return Double.valueOf(twoDForm.format(d)); 
} 
+0

這是什麼輪模式? – 2012-08-03 12:04:52

+0

而不是兩個數學運算創建兩個新對象,並調用3個方法只顯示點後4位數字,這麼多的開銷 – marwinXXII 2012-08-03 19:23:39

0
DecimalFormat dtime = new DecimalFormat("#.####"); 
              ^^^^ 
x1= Double.valueOf(dtime.format(x1)); 
+2

我想你可能在這裏忘記了一條線; dtime不使用。 – 2012-08-03 11:58:38

+0

Opps ..!謝謝@JimKiley – MAC 2012-08-03 12:00:14

1

嘗試此

String.format("%.4f", 11.955165229802363) 
2
Math.ceil(x1* 10000)/10000 

替換10000 10^N,其中N是點後位數。點後4位數的情況下,精度不應該丟失。

1

假設你想圓/截斷小數和速度不是一個很大的代價,你想用BigDecimal(BigInteger unscaledVal, int scale)scale設置爲4

0
float round = Round(num,4); 
System.out.println("Rounded data: " + round); 
} 

public float Round(float Rval, int Rpl) { 
float p = (float)Math.pow(10,Rpl); 
Rval = Rval * p; 
float tmp = Math.round(Rval); 
return (float)tmp/p; 
} 
0
double d1 = Double.valueOf(x1); 
    double d2 = Double.valueOf(x1); 
    DecimalFormat df = new DecimalFormat("#.####"); 
    System.out.print("x1 = "+df.format(d1)); 
    System.out.print("x2 = "+df.format(d2)); 
0

如果你只想要顯示的像這樣的值,使用DecimalFormat將該值轉換爲字符串,然後顯示該值。

如果你真的想四捨五入到四位數,你可以通過乘以10000,四捨五入,然後再分。不過,我會建議,因爲並非所有的十進制數都可以用浮點格式正確表示。變化是你會得到像你已經有的東西。

如果您確實需要四位數字作爲內部狀態使用,請改用BigDecimal。它有適當的裝備去做你想做的事。