我在互聯網上做了很多搜索,但無法獲得令人滿意的解決方案。 我做的最好的是:Android:float - 擺脫尾部零點
String b = new BigDecimal(floatNumber.stripTrailingZeros().toPlainString();
但一些道上討厭的錯誤,例如如果數字是1.6,我得到1.600000744(或類似)。
感謝
我在互聯網上做了很多搜索,但無法獲得令人滿意的解決方案。 我做的最好的是:Android:float - 擺脫尾部零點
String b = new BigDecimal(floatNumber.stripTrailingZeros().toPlainString();
但一些道上討厭的錯誤,例如如果數字是1.6,我得到1.600000744(或類似)。
感謝
你看到的是真的不是一個錯誤,它只是使用浮點數精度有限的結果。它不能準確表示1.6。
如果你想打印切斷數字過去的某一點,你可以與DecimalFormat做到如前面提到的:
String result = new DecimalFormat("#.##").format(floatNumber).toString()
這將打印兩位小數,添加許多#」就像你想在小數點後被切斷一樣。但是,你所看到的技術上是floatNumber的正確值,即使你不想那麼精確。
如果我打印出浮動1.6它看起來是正確的。我有數字後不超過2位數字。像2.55,一些像1.6一樣,大多數沒有小數位。我如何讓他們看起來不錯?我不想要1.00的 – user1324936 2012-04-17 19:07:58
閱讀DecimalFormat文檔,它會有你的答案:http://docs.oracle.com/javase/6/docs/api/java/text/DecimalFormat.html – Tim 2012-04-17 19:11:36
這是太多了文本 – user1324936 2012-04-18 21:46:30
試試這個,
DecimalFormat twoDecForm = new DecimalFormat("#.##");
String b = twoDecForm.format(Double.parseDouble(Float.toString(floatNumber)));
你真的說1.6變成了16,還是隻是一個錯字? – Tim 2012-04-16 20:09:04