2013-06-04 149 views
0
public static String convertCentimeterToHeight(double d) { 
    double feetPart = 0; 
    double inchesPart = 0; 
    if (String.valueOf(d) != null && String.valueOf(d).trim().length() != 0) { 
     feetPart = (int) Math.floor((d/2.54)/12); 
     inchesPart = (int) Math.ceil((d/2.54) - (feetPart * 12)); 
    } 
    return (String.valueOf(feetPart)) + "' " + String.valueOf(inchesPart) + "''"; 
} 

我想刪除小數點,但我仍然得到像這樣的東西5.0' 6.0"。當我們做一個String.value() on a variable它是否刪除小數,並給我確切的數字?刪除數字小數點

+3

使用整數。你爲什麼用雙打來存儲整數? – njzk2

+1

爲什麼不使用「鑄造」? – Juvanis

+0

同意,爲什麼不使用Integer.parseInt呢? –

回答

5

當你想存儲int S IN feetPartinchesPart變量,只是聲明爲int S:

int feetPart = 0; 
int inchesPart = 0; 

然後你就會避免它們被顯示爲double S(即與尾部.0)。

1

,就可以把雙變量爲int

return (String.valueOf((int)feetPart)) + "' " + 
String.valueOf((int)inchesPart) + "''"; 

這應該修復它。

3

您可以簡單地將它投入int

(int) d; 
0

所有的答案替換你的變量類型。 我的方式保持不變。 只使用這些代碼,你會發現它的魔力。

double d = 1.0d; 
String s = String.format("%1$.0f", d); 
System.out.println(s); 
+0

你可以參考http://docs.oracle.com/javase/7/docs/api/index.html來學習如何爲我們的java格式。 – BrookLeet

+0

也String.format會自動處理null異常或非法異常。如果你使用TYPE CONVERSION,你應該自己處理它。這不方便。 – BrookLeet

+0

您正在使用錘子來打破堅果。這是一個簡單的'(int)'cast低效的數百倍。 – EJP

1

供參考。

// always true, it never returns null 
String.valueOf(d) != null 
// always true, a double is never an empty string. 
String.valueOf(d).trim().length() != 0; 

// same as 
int feetPart = (int) (d/2.54/12); 
int inchesPart = ((int) (d/2.54)) % 12; 

// same as 
return feetPart + "' " + inchesPart + "\"";