关闭。这个问题需要详细或明确。它目前不接受答案。
**想改进这个问题吗?**编辑这篇文章,添加细节并澄清问题。
三天前关门。
改进这个问题
我正在通过一门关于java的在线课程学习java编程,这门课程提供了文本信息,并在其中阅读了“浮点变量可以存储带有6-7位小数的小数”。当我使用EclipseIDE学习java编程时,我在ide中尝试了这个双引号句子。
package questionsToPractice;
public class FloatDataType {
public static void main(String[] args) {
//TODO Auto-generated method stub
float f1=2.4329567f; //Simply trying to follow the definition. Have intentionally kept 6-7 digits after decimal.
System.out.println("Output of f1:"+ f1);
float f2=2.4329567859f; //Tried it with more than 7 digits after decimal
System.out.println("Output of f2:"+ f2);
float f3=243.29567859f; //Now made some changes, it has three numbers to the left of the decimal point and 8 digits to the right of decimal point
System.out.println("Output of f3:"+ f3);
}
}
在上图中,双引号定义对f1和f2适用,即在f1和f2的输出中,小数点后最多保留7位数字。但是,当我增加小数点左边的数字时(对于f3),输出中的小数点后不会保留6-7位小数。
Output of f1: 2.4329567
Output of f2: 2.4329567
Output of f3: 243.29568
我刚开始编程,所以在搜索了很多之后,我想答案可能在于ieee-754浮点数的单精度表示(32位),因为这样我们可以了解实数在内存级别是如何处理的,甚至尝试将问题与ieee标准联系起来,就像按照一步一步的步骤,在单精度32位寄存器中有适当的位,但最终什么都没有。
在我看来,这个问题似乎与浮点数中的有效数字总数有关。我这样认为是因为,即使是输出也认为小数点左边的数字是重要的,并与小数点右边的数字相妥协。或者它是在EclipseIDE中表示/处理实数的一种方法。
请以最好的方式帮助我,这是一个避免使用高端技术术语的要求,因为我没有计算机科学背景。
1条答案
按热度按时间svdrlsy41#
“浮点变量可以存储6-7位小数的小数”
这是一个糟糕的描述
float
能力。在上图中,双引号定义在f1和f2中保持为真,即在f1和f2的输出中,保留小数点后最多7位。
它意味着6-7个有效数字,即从第一个非零数字到最后一个非零数字的所有数字(包括中间的任何零数字)。它不是指小数点后的7位数字。
如果你唯一能做的就是
float
将一个六位数的十进制数字转换为它,然后再转换回一个六位数的十进制数字,只要它在float
格式。如果用它做任何算术运算,就不能保证有多少位数是正确的。这取决于执行的操作和涉及的数量。