2014-07-24 25 views
2

我試圖阻止從科學記數法打印的java double。我知道我可以爲此使用DecimalFormat,但是這會產生一個String。我怎樣才能生成一個實際的雙? 我已經試過:Java DecimalFormat加倍

DecimalFormat df = new DecimalFormat("#"); 
df.setMaximumFractionDigits(8); 
double n = Double.parseDouble(df.format(z)); 

然而,這仍然會產生在科學記數法雙。

+0

雙重不是以科學記數法或非科學記數法。雙精度型採用IEEE 754二進制64位浮點格式。代表雙倍的文本可以是科學或非科學記數法。 tl; dr打印字符串。 – user2357112

+0

您是否意識到「double」是內存中的64位值,並且沒有「科學計數法中的雙重值」這樣的事情?在轉換爲十進制時選擇十進制格式進行打印。 –

+0

它可以用'Double'而不是'double'來完成嗎? –

回答

5

格式不是double數據類型的屬性。這隻定義了一組值。

打印總是需要轉換爲字符串,所以DecimalFormat很好。

至於使用一組完全不同的小數值作爲值,請參閱java.math.BigDecimal。這是一組「全部」小數部分,具有動態小數位數,操作和舍入控制。

+0

對於BigDecimal +1 –