gpt4 book ai didi

java - 通过添加 '.' 、 ',' 、修剪(不四舍五入)使双倍可读,因此只有最后 2 位数字可能?

转载 作者:行者123 更新时间:2023-12-02 09:14:38 27 4
gpt4 key购买 nike

我一直在寻找一种转换 double 的方法,它对于可读的字符串来说很大。双倍:

 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 位 float ,可提供 15-16 位精度。您可以通过检查 Java 中的以下表达式来验证这一点:1000000000000000.123456789 == 1000000000000000.1

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

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

关于java - 通过添加 '.' 、 ',' 、修剪(不四舍五入)使双倍可读,因此只有最后 2 位数字可能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59097027/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com