Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/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 为什么float最多只能打印8位数字?_Java_Floating Point_Precision - Fatal编程技术网

Java 为什么float最多只能打印8位数字?

Java 为什么float最多只能打印8位数字?,java,floating-point,precision,Java,Floating Point,Precision,当我打印下面的语句时 System.out.println(121.3456422f); 我得到的输出为121.34564(8位) 如果我正在打印 System.out.println(121345642.333332f); 我得到的输出为1.2134564E8(包括E在内的10位数字) 我想知道为什么浮点数最多只有8位?您应该使用Double。对于浮子型来说太大了。您可以这样做: System.out.println(121.3456422d); JVM自动将所有变量转换为类型限制。()

当我打印下面的语句时

System.out.println(121.3456422f);
我得到的输出为
121.34564
(8位)

如果我正在打印

System.out.println(121345642.333332f);
我得到的输出为
1.2134564E8
(包括E在内的10位数字)


我想知道为什么浮点数最多只有8位?

您应该使用Double。对于浮子型来说太大了。您可以这样做:

System.out.println(121.3456422d);
JVM自动将所有变量转换为类型限制。():

浮点:浮点数据类型是单精度32位IEEE 754浮点

双精度:双精度数据类型是双精度64位IEEE 754浮点


查看有关基本类型的Oracle文档:

您应该使用Double。对于浮子型来说太大了。您可以这样做:

System.out.println(121.3456422d);
JVM自动将所有变量转换为类型限制。():

浮点:浮点数据类型是单精度32位IEEE 754浮点

双精度:双精度数据类型是双精度64位IEEE 754浮点


查看有关基本类型的Oracle文档:

如果要确保打印的位数,请使用String.format()函数

例如:

System.out.println(String.format("%3.10f", 121.3456422f));

我认为你的精度太高了,不能用浮球。或者,您可以使用double,而natural toString()应该打印您想要的精度。

如果要确保打印的位数,请使用String.format()函数

例如:

System.out.println(String.format("%3.10f", 121.3456422f));

我认为你的精度太高了,不能用浮球。或者,您可以使用双精度,并且natural toString()应该打印您想要的精度。

浮点到字符串的默认转换生成最短的小数,该小数将在输入时转换回浮点。这通常是大约8位十进制数字,因为float只有24位有效有效位


121.3456422f的精确值为121.34564208984375。比它小的最大浮动是121.34563446044921875。121.34564介于这些值之间,并且更接近原始值而不是替代值,因此8位数足够。

浮点到字符串的默认转换产生最短的小数点,可在输入时转换回浮点。这通常是大约8位十进制数字,因为float只有24位有效有效位


121.3456422f的精确值为121.34564208984375。比它小的最大浮动是121.34563446044921875。121.34564介于这些值之间,并且更接近原始值而不是替代值,因此8位数足够。

您破坏了我的编辑。请还原更改并再次添加编辑。请停止撤消编辑。问题的格式应该正确,这就是这里的社区所做的。你破坏了我的编辑。请还原更改并再次添加编辑。请停止撤消编辑。这个问题应该正确格式化,这就是这里的社区所做的。我知道double打印的值更多,但我只想知道为什么Float只打印8位的值。那么为什么限制8位的值float@Bat,float:浮点数据类型是单精度32位IEEE 754浮点。然后看,我知道double打印的值更多,但我只想知道为什么Float只打印8位的值,为什么限制8位的值float@Bat,float:浮点数据类型是单精度32位IEEE 754浮点。然后看看