我在互联网上进行了大量搜索,但无法获得令人满意的解决方案。
我所做的最好的事情是:
String b = new BigDecimal(floatNumber.stripTrailingZeros().toPlainString();
但是它没有一些讨厌的错误,例如如果数字是1.6我得到1.600000744(或类似的)。
谢谢
最佳答案
您所看到的实际上并不是错误,这只是使用精度有限的浮点数的结果。它不能准确表示1.6。
如果您希望打印截断某一点之后的数字,可以使用前面提到的DecimalFormat进行:String result = new DecimalFormat("#.##").format(floatNumber).toString()
这将打印两个小数位,在小数点后要添加任意数量的#。但是,即使您不希望精确度很高,但从技术上讲,您看到的是floatNumber的正确值。