0

我老师的问题是:写下可能但可能出现舍入错误的作业。这是在 Java 中。

float f;
long l;
double d;

f = l;
d = l;

这就是答案,但为什么呢?float 的值和最大值较高,float 是一个浮点数。相比之下,long 只是完整的数字,那么为什么会有舍入错误?

4

2 回答 2

5

随着浮点数变大,浮点数的绝对值变得不那么准确。超过某个点,最接近的两个可精确表示的浮点数之间的差值大于 1。

或者反过来看,看最接近的float表示Long.MAX_VALUE。现在看看float最接近Long.MAX_VALUE - 1...

除了其他任何事情之外,您应该能够计算出并非每个都long可以float仅通过数据类型的大小来表示:有 2 32 个可能的位模式float(并非所有这些都是正常数字)和 2 64 个可能的位模式为long.

于 2013-02-27T12:55:06.323 回答
-1

原因:浮点32位,长在java中是64位

于 2013-02-27T12:56:55.250 回答