我在互联网上做了很多搜索,但无法获得令人满意的解决方案。 我做的最好的是:
String b = new BigDecimal(floatNumber.stripTrailingZeros().toPlainString();
但它有一些令人讨厌的错误,例如如果数字是1.6我得到1.600000744(或类似)。
感谢
答案 0 :(得分:2)
你所看到的确实不是一个错误,它只是使用精度有限的浮点数的结果。它无法准确表示1.6。
如果您希望打印件在某个点之后切断数字,您可以使用前面提到的DecimalFormat来完成:
String result = new DecimalFormat("#.##").format(floatNumber).toString()
这将打印两个小数位,在要删除小数后添加任意数量的#。但是你所看到的在技术上是floatNumber的正确值,即使你不想那么精确。
答案 1 :(得分:1)
试试这个,
DecimalFormat twoDecForm = new DecimalFormat("#.##");
String b = twoDecForm.format(Double.parseDouble(Float.toString(floatNumber)));