將double轉換爲不帶小數位的字符串的最佳方法是什麼?將double轉換爲不帶小數位的字符串的最佳方法
什麼String.valueOf((int) documentNumber)?
小數點後面的雙打總是有0。我不需要舍入或截斷
將double轉換爲不帶小數位的字符串的最佳方法是什麼?將double轉換爲不帶小數位的字符串的最佳方法
什麼String.valueOf((int) documentNumber)?
小數點後面的雙打總是有0。我不需要舍入或截斷
如果你確信雙確實是一個整數,用這一個:
NumberFormat nf = DecimalFormat.getInstance();
nf.setMaximumFractionDigits(0);
String str = nf.format(documentNumber);
作爲獎勵,這樣你保持你的語言環境配置爲千個分隔符。
編輯
我添加此以前刪除的選擇,因爲它似乎是對OP有用:
Double.valueOf(documentNumber).intValue();
在我看來,它將給出與鑄造到int相同的結果。我很高興你看到它,它爲你工作。我重新添加刪除的答案,因爲它似乎很有用。 – 2015-02-25 13:37:22
您可以將雙轉換爲字符串以最低限度的必要精度:
public static String ceonvert(double d)
{
if(d == (long) d)
return String.format("%d",(long)d);
else
return String.format("%s",d);
}
或者這樣:
> new DecimalFormat("#.##").format(2.199); //"2.2"
你可以試試這個:
String numWihoutDecimal = String.valueOf(documentNumber).split("\\.")[0];
這不是一個好的做法,但感謝您的回答 – 2015-02-25 13:33:25
我不確定這是否是最好的方法,但我確定它是最短的方式:
((int)documentNumber) + ""
這不是一個好的做法,但感謝您的回答 – 2015-02-25 16:53:51
請解釋爲什麼這不是好的做法。 – 2015-02-25 20:20:57
首先,我們將double轉換爲整數,並且通過將空字符串添加到字符串來轉換整數。 3個簡單的操作。也許一個壞處是,我們創建了一個超額的對象(空字符串),但是java編譯器正在優化這樣的構造。甚至像JVM這樣的對象就像空字符串一樣在JVM開始時被兌現。在我看來,這是最佳實踐:JVM的簡單,易讀和易於優化。證明我是錯的。 – 2015-02-25 20:31:18
鑑於新編輯的問題,指出了雙打其實都是整數,我會說你的建議回答String.valueOf((int) documentNumber)
是偉大的。
取決於是否要截斷或舍入 – Kirby 2015-02-24 22:04:10
我的雙數在小數點後總是有0。我不需要輪迴或截斷 – 2015-02-25 12:48:09
嗯,它是一個或另一個。聽起來像截斷,然後。投到int最簡單 – Kirby 2015-02-25 16:46:54