我有一道考试题要复习,题目是 4 分。
"In java we can assign a int to a double or a float". Will this ever lose information and why?
我之所以这么说是因为整数通常是固定长度或大小的——存储数据的精度是有限的,而以 float 存储信息可以是无限的,本质上我们会因此而丢失信息
现在我有点粗略地知道我是否在这里击中了正确的区域。我很确定它会失去精确度,但我无法确切说明原因。请问我能得到一些帮助吗?
最佳答案
在 Java 中,整数使用 32 位来表示它的值。
在 Java 中,FLOAT 使用 23 位尾数,因此大于 2^23 的整数将被截断其最低有效位。例如 33554435(或 0x200003)将被截断为大约 33554432 +/- 4
在 Java 中,DOUBLE 使用 52 位尾数,因此能够表示 32 位整数而不会丢失数据。
参见维基百科上的“Floating Point”
关于java - 精度损失 - int -> float 或 double,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2781086/