1

我在互联网上进行了很多搜索,但找不到令人满意的解决方案。我做的最好的是:

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

但它有一些讨厌的错误,例如,如果数字是 1.6,我得到 1.600000744(或类似的)。

谢谢

4

2 回答 2

2

您所看到的实际上不是错误,它只是使用精度有限的浮点数的结果。它不能准确地表示 1.6。

如果您希望打印在某个点之后截断数字,您可以使用前面提到的 DecimalFormat 执行此操作:

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

这将打印两位小数,在小数点后添加任意数量的#'s 以被截断。但是从技术上讲,您看到的是 floatNumber 的正确值,即使您不想要那么高的精度。

于 2012-04-16T22:16:48.427 回答
1

试试这个,

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

String b = twoDecForm.format(Double.parseDouble(Float.toString(floatNumber)));
于 2012-04-16T21:31:04.517 回答