2014-03-28 64 views
-1

尾隨零,我無法理解,爲什麼這個代碼retursn 10.0,而不是10的java +將字符串轉換爲Double追加後小數

Double inputDouble = Double.valueOf("10"); 
System.out.println(inputDouble); 

要求是 如果我通過10.00,輸出應爲10.00
如果我通過10.0,輸出應爲10.0
和如果我通過10,輸出應該是10

是有可能和在一個乾淨的方式

+1

'10.00' =='10.0' =='10',所以沒有。 – Pshemo

回答

5

的要求是,如果我通過10.00,輸出應爲10.00

然後你使用了錯誤的類型。 double沒有有效數字的概念--10,10.0和10.00之間沒有區別。

你應該嘗試使用BigDecimal代替:

System.out.println(new BigDecimal("10")); // Prints 10 
System.out.println(new BigDecimal("10.0")); // Prints 10.0 
System.out.println(new BigDecimal("10.00")); // Prints 10.00 
從別的

除此之外,即使double儘量保存微不足道的數字,它會考慮二進制數字,因爲它是一個浮動二進制點類型。如果您對您提供的實際十進制數位感興趣,那是使用BigDecimal的另一個原因。

+0

好吧,那麼可以做些什麼來刪除/丟棄輸出中的尾隨零,它是Double類型的。所以Double inputDouble = Double.valueOf(「10」);返回10 –

+0

@Naroji:你可以使用['DecimalFormat'](http://docs.oracle.com/javase/8/docs/api/java/text/DecimalFormat.html)。 –

相關問題