Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将双精度格式设置为字符串?_Java_Android_Kotlin - Fatal编程技术网

Java 将双精度格式设置为字符串?

Java 将双精度格式设置为字符串?,java,android,kotlin,Java,Android,Kotlin,String.format(“%,.0f”,2000000000000000000.0) ->199999999999800000000 为什么?了解双重数据类型-它是数量和规模的近似值 以下任务: double d = 2.00000000000f; 打印时会生成1.9999999的值。你在这里看到的是它的放大。双精度数据类型也有一个最大值(取决于实现),即它们可以支持多少个重要位置(通常最多15个)-这就是为什么最后6位数字都是零(0) 对于您的特定解决方案,如果不需要浮点数据,请坚持使用

String.format(“%,.0f”,2000000000000000000.0)

->199999999999800000000
为什么?

了解双重数据类型-它是数量和规模的近似值

以下任务:

double d = 2.00000000000f;
打印时会生成1.9999999的值。你在这里看到的是它的放大。双精度数据类型也有一个最大值(取决于实现),即它们可以支持多少个重要位置(通常最多15个)-这就是为什么最后6位数字都是零(0)


对于您的特定解决方案,如果不需要浮点数据,请坚持使用整数。

这是因为如果使用默认数据类型,当前处理器(以及大多数虚拟机)的工作方式就是这样。详细解释了这一点

如果你想精确使用。这门课是专门为这样的情况而设计的——用于货币相关的东西和科学计算

以Java提供的正确方式格式化小数

这是一本很好的教程


希望有帮助。

我的问题已经解决了


String.format(“%,.0f”,BigDecimal(2000000000000000000000000.0,MathContext.DECIMAL64))

因为内部表示的精度。请看@Lonnguyenvan,您可以在这里寻找解决方案:但当我尝试它时,它被缩放为21个零(0),仍然具有2000000000000000000的值。0@LongNguyenVan使用DecimalFormat-是的,因为if使用与您相同的double-我展示它只是为了展示如何在java中正确格式化小数。使用BigDecimal表示巨数-您可以使用此类控制舍入。谢谢使用BigDecimal和MathContext@Long若答案正确,请接受
String pattern = "###,###.###";
DecimalFormat decimalFormat = new DecimalFormat(pattern);

String format = decimalFormat.format(123456789.123);
System.out.println(format); // -> 123.456.789,123