2012-03-22 62 views
1

我有一個程序,我通過基於條件從文件中添加幾個輸入價格來生成兩個雙數字。系統輸出爲一個java程序中的雙數字

String str; 
double one = 0.00; 
double two = 0.00; 
BufferedReader in = new BufferedReader(new FileReader(myFile)); 

while((str = in.readLine()) != null){ 
    if(str.charAt(21) == '1'){ 
     one += Double.parseDouble(str.substring(38, 49) + "." + str.substring(49, 51)); 
    } 

    else{ 
     two += Double.parseDouble(str.substring(38, 49) + "." + str.substring(49, 51)); 
    } 
    } 

in.close(); 
System.out.println("One: " + one); 
System.out.println("Two: " + two);  

輸出是這樣的:

One: 2773554.02 
Two: 6.302505836000001E7 

問:

輸入都沒有在他們兩個以上小數。一和二的計算方式完全相同。

那麼爲什麼輸出格式是這樣的。

我所期待的是:

One: 2773554.02 
Two: 63025058.36 

爲什麼印刷是兩種不同的格式?我想再次將輸出寫入文件,因此小數點後只有兩位數字。

+6

使用'DecimalFormat' - 例如http://stackoverflow.com/questions/50532/how-do-i -format -a-number-in-java – scibuff 2012-03-22 11:28:27

+3

此外,我會使用'BigDecimal'而不是'double'來避免解析雙引入的舍入錯誤(這就是爲什麼你在第二個數字結尾看到00000001) – beny23 2012-03-22 11:31:08

+0

As總是:http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html - 非常值得一讀。 – mcfinnigan 2012-03-22 11:42:19

回答

相關問題