2012-04-16 68 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)));