我可以使用 float[] 来保存整数吗?

5Yr*_*DBA 2 java

我们有一个类,其中有 1float[]和 1 int[]。有时该类的用户需要输入 float 值,有时需要输入 int 值,但不会为每个实例都输入两者。

我们知道所有可能的 float 和 int 值都不会很大(小于 100000)。我想我们可能不需要int[],只需float[]在必要时使用 来保存 int 值。当我们使用它们的时候,我们可以在必要的时候将它们转换为int。一个存储阵列就一目了然了。

你觉得我的想法怎么样?将 int 放入 float[] 不会丢失任何东西。我是对的?

编辑:

一个类有一个float[]类变量和一个int[]为用户保存值的类变量。它的用户将使用 float[] 或 int[],但不能同时使用两者。所以我们有 get float[] 和 set float[] 方法,还有 get int[] 和 set int[] 方法,以及不同的构造函数。我正在考虑通过删除 int[] 类变量并为不同用户的 int 值和 float 值使用 float[] 来简化此类。

Pet*_*rey 5

float具有 24 位精度(和一个符号位),这意味着您可以存储int-16777216 到 16777216 之间的值,而不会损失精度。

如果您的所有值都是偶数或 10 或 100 的倍数,您可以安全地存储更大的值。重要的是,你的数字除以 2 的所有幂后必须在该范围内。

为了结合intfloat我会使用double它可以容纳所有可能的浮点和整数值。这消耗的额外内存不太可能很大。(除非你有数百万个)

  • IEEE 32 位浮点数有 24 位精度,Java 使用该标准。我不明白你引用了什么说它有 23 位。对于普通数字,浮点会移位,因此最高位是 1,因此您不需要存储它。浮点数只存储 23 位,并且最高位是隐含的。 (2认同)