2012-04-16 116 views
1

我在互聯網上做了很多搜索,但無法獲得令人滿意的解決方案。 我做的最好的是:Android:float - 擺脫尾部零點

String b = new BigDecimal(floatNumber.stripTrailingZeros().toPlainString(); 

但一些道上討厭的錯誤,例如如果數字是1.6,我得到1.600000744(或類似)。

感謝

+0

你真的說1.6變成了16,還是隻是一個錯字? – Tim 2012-04-16 20:09:04

回答

2

你看到的是真的不是一個錯誤,它只是使用浮點數精度有限的結果。它不能準確表示1.6。

如果你想打印切斷數字過去的某一點,你可以與DecimalFormat做到如前面提到的:

String result = new DecimalFormat("#.##").format(floatNumber).toString()

這將打印兩位小數,添加許多#」就像你想在小數點後被切斷一樣。但是,你所看到的技術上是floatNumber的正確值,即使你不想那麼精確。

+0

如果我打印出浮動1.6它看起來是正確的。我有數字後不超過2位數字。像2.55,一些像1.6一樣,大多數沒有小數位。我如何讓他們看起來不錯?我不想要1.00的 – user1324936 2012-04-17 19:07:58

+0

閱讀DecimalFormat文檔,它會有你的答案:http://docs.oracle.com/javase/6/docs/api/java/text/DecimalFormat.html – Tim 2012-04-17 19:11:36

+0

這是太多了文本 – user1324936 2012-04-18 21:46:30

1

試試這個,

DecimalFormat twoDecForm = new DecimalFormat("#.##"); 

String b = twoDecForm.format(Double.parseDouble(Float.toString(floatNumber)));