通过添加'。使其具有双重可读性。 ,',',修整(不舍入),因此只能使用最后两位数字吗?

问题描述 投票:0回答:1

我一直在寻找一种将double转换为可读String的方法。双重:

 double myValue = 1000000000000000.123456789;

哪个打印出来的时候给我这个:

 1.0000000000000001E15

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

1.000.000.000.000.000,12

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

java string formatting double currency
1个回答
1
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.