2012-08-22 46 views
0

您好我正在一個android計算器應用程序和現在工作的操縱。我已經爲以下定義:Android計算器:操作查詢+刪除不需要的零爲答案輸出

ArrayList<Float> inputnum = new ArrayList<Float>(); 
float inputnum1; 
float inputnum2; 

,然後操作,

case MULTIPLY: 
inputnum1 = inputnum.get(0); 
inputnum2 = inputnum.get(1); 
inputnum.add(inputnum1 * inputnum2); 
Display.setText(String.format("%.9f", inputnum.get(0))); 

類似的部門之一。

muliply函數和除法函數適用於整數(例如5 * 4輸出20.00000000) 然而,當它處理帶小數位的數字時,例如5.3 * 4,它輸出爲21.12000089,這是不正確的。

是什麼問題? 另外,如何設置輸出到顯示器去除不必要的零點?例如 當5 * 4它只顯示20而不是20.000000作爲最終答案? 當5.3 * 4 = 21.12而不是21.12000000作爲最終答案?

非常感謝!

+0

對於你的第一個問題。檢查[this](http://stackoverflow.com/questions/2100490/floating-point-inaccuracy-examples) – nandeesh

+0

謝謝!似乎改變所有相關的浮動,以成爲雙重然後它的工作,現在1.2 * 6.3 = 7.56而不是7.560000042。 – pearmak

回答

0

只要將所有相關的float更改爲double,那麼就避免出現舍入錯誤。

如果想通過填充零後9位小數點,例如7.56變成7.560000000,可以使用下面的編碼。

Display.setText(String.format("%.9f", inputnum.get(0)));