2014-07-10 16 views
-5

這裏是我的代碼如何設置兩個零的Java Double小數。

import java.text.DecimalFormat; 
import java.text.ParseException; 

public class TestJava { 

    public static void main(String[] args) throws ParseException { 
     DecimalFormat df = new DecimalFormat("#.00"); 
     String value = df.format(250.0); 
     System.out.println(Double.parseDouble(value)); 
    } 
} 

OUTPUT:250.0
我需要它作爲250.00 [不是在雙模式下的字符串needed..need答案]

請幫我理清這個問題

感謝

+5

在將其輸出到控制檯之前,沒有理由將其重新轉換爲雙精度。作爲一個double,250.0等於250.00。使其爲250.00的唯一原因是格式化輸出,它將是一個字符串。 – forgivenson

+0

謝謝親愛的原諒人 –

+1

你不能。 Double使用浮點運算,這意味着你不能決定點的位置。如果您想要定點算術,請改用BigDecimal。 –

回答

2

你混淆了一個實數的傳統十進制表示(如你在小學任教)同表示計算機浮點類型,如double。他們不同,他們的工作方式不同。

在後一種情況下,只有一個250.0的表示形式爲double。這是一個精確的數字作爲二進制版本告訴我們:

01000000 01101111 01000000 00000000 
00000000 00000000 00000000 00000000 

當您轉換的字符串"250.0""250.00"double,你會得到完全一樣的價值。


從數學的角度來看,你似乎是試圖了許多的精密模型;即你希望"250.0"意味着249.5000 ...到... 250.49999和"250.00"意味着249.95000 ...到250.049999 ....

可以使用double測量的精度(或其他)模式,但你需要使用一對數字來做到這一點。

+0

謝謝親愛的Stephen C –

0

類型double剛剛成立的數值 - 它不持有任何通知關於號碼的格式。值「250」與值「250.0」或「250.00」相同 - 您無法在double變量中存儲格式信息,例如小數點後應打印多少個零。

如果您需要保存此信息,則需要將該值保留爲字符串,或者查找不同的解決方案。

+0

謝謝親愛的Jesper –

0

試試這個

public static void main(String[] args) { 
     Double i = 250.0; 
     System.out.format("Result is %.2f", i); 
    } 

輸出爲

250.00

+0

謝謝親愛的Amit –

0
public static void main(String[] args) { 
    Double i = 250.0; 
    System.out.format("Result is %.2f", i); 
} 

上述方法不起作用; System.out.format()接受一個String和一個Object []不是String,Double。

相關問題