2015-02-24 133 views
2

將double轉換爲不帶小數位的字符串的最佳方法是什麼?將double轉換爲不帶小數位的字符串的最佳方法

什麼String.valueOf((int) documentNumber)?

小數點後面的雙打總是有0。我不需要舍入或截斷

+1

取決於是否要截斷或舍入 – Kirby 2015-02-24 22:04:10

+0

我的雙數在小數點後總是有0。我不需要輪迴或截斷 – 2015-02-25 12:48:09

+0

嗯,它是一個或另一個。聽起來像截斷,然後。投到int最簡單 – Kirby 2015-02-25 16:46:54

回答

1

如果你確信雙確實是一個整數,用這一個:

NumberFormat nf = DecimalFormat.getInstance(); 
nf.setMaximumFractionDigits(0); 
String str = nf.format(documentNumber); 

作爲獎勵,這樣你保持你的語言環境配置爲千個分隔符。

編輯
我添加此以前刪除的選擇,因爲它似乎是對OP有用:

Double.valueOf(documentNumber).intValue(); 
+0

在我看來,它將給出與鑄造到int相同的結果。我很高興你看到它,它爲你工作。我重新添加刪除的答案,因爲它似乎很有用。 – 2015-02-25 13:37:22

1

您可以將雙轉換爲字符串以最低限度的必要精度:

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" 
2

你可以試試這個:

String numWihoutDecimal = String.valueOf(documentNumber).split("\\.")[0]; 
+0

這不是一個好的做法,但感謝您的回答 – 2015-02-25 13:33:25

0

我不確定這是否是最好的方法,但我確定它是最短的方式:

((int)documentNumber) + "" 
+0

這不是一個好的做法,但感謝您的回答 – 2015-02-25 16:53:51

+0

請解釋爲什麼這不是好的做法。 – 2015-02-25 20:20:57

+0

首先,我們將double轉換爲整數,並且通過將空字符串添加到字符串來轉換整數。 3個簡單的操作。也許一個壞處是,我們創建了一個超額的對象(空字符串),但是java編譯器正在優化這樣的構造。甚至像JVM這樣的對象就像空字符串一樣在JVM開始時被兌現。在我看來,這是最佳實踐:JVM的簡單,易讀和易於優化。證明我是錯的。 – 2015-02-25 20:31:18

0

鑑於新編輯的問題,指出了雙打其實都是整數,我會說你的建議回答String.valueOf((int) documentNumber)是偉大的。

相關問題