通过添加“.”使双重可读, ',' ,修整(不舍入)所以最后两位数可能吗?

making double readable by adding '.' , ',' , trimming (not rounding) so only 2 last digits possible?

我一直在寻找一种方法来转换双精度数,这对可读字符串来说很大。 双:

 double myValue = 1000000000000000.123456789;

打印出来的结果是:

 1.0000000000000001E15

我正在寻找的结果是这样的:

1.000.000.000.000.000,12

我已经找了好几天了,但不幸的是我找不到解决方案,所以我想也许我可以在这里问:)感谢阅读!

如果您有兴趣设置自己的分隔符(即不使用您的语言环境的默认值),那么您可以执行以下操作:

DecimalFormatSymbols symbols = new DecimalFormatSymbols();
symbols.setGroupingSeparator('.');
symbols.setDecimalSeparator(',');
DecimalFormat format = new DecimalFormat("#,##0.00", symbols);
System.out.println(format.format(100000000000.123456789));

你在问题中也提到了四舍五入。不幸的是,这与格式完全无关——您在 Java 中达到了 double 的精度极限。 double 是一个 64 位浮点数,它给你 15-16 位精度。您可以通过检查 Java 中的以下表达式来验证这一点:1000000000000000.123456789 == 1000000000000000.1.

所以,实际上发生的情况是,一旦您将值分配给 myValue 变量,它就已经被四舍五入了。从那时起,无论您如何格式化它都不会恢复精度。

如果您需要比 double 更高的精度,您应该查看支持任意精度的 BigDecimal