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

Java 我可以使用float[]保存整数吗?,java,Java,我们有一个类,它有一个float[]和一个int[]。有时,该类的用户需要将float值和int值放在一起,但不是每个实例都需要 我们知道所有可能的浮点和int值都不会很大(小于100000)。我想我们可能不需要int[],只要在必要时使用float[]来保存int值即可。在使用它们时,我们可以在必要时将它们转换为int。一个存储阵列将非常清晰 你觉得我的想法怎么样?将int放入float[]不会丢失任何内容。我是对的 编辑: 一个类有一个float[]类变量和一个int[]类变量来保存用户的值

我们有一个类,它有一个
float[]
和一个
int[]
。有时,该类的用户需要将float值和int值放在一起,但不是每个实例都需要

我们知道所有可能的浮点和int值都不会很大(小于100000)。我想我们可能不需要
int[]
,只要在必要时使用
float[]
来保存int值即可。在使用它们时,我们可以在必要时将它们转换为int。一个存储阵列将非常清晰

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

编辑:


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

对于小于100000的值,应该可以。并非所有的
int
值都可以精确地表示为
float
(毕竟它们都是32位数据类型),但在这个范围内,您应该可以


请注意,我不确定这是否是一个好主意,但它应该可以工作。

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

如果所有值都是偶数或10或100的倍数,则可以安全地存储较大的值。重要的是,当你的数字被二的所有幂除时,必须在这个范围内


要组合
int
float
,我将使用
double
,它可以保存所有可能的float和int值。这消耗的额外内存不太可能很大。(除非你有数百万个这样的答案)

三个独立的答案,取决于你的用例:

  • 如果需要公开实际的int数组或float数组,请将成员变量设置为对象,并根据需要转换为int[]或float[]

  • 如果您对空间效率不感兴趣,请使用泛型和ArrayList,其中T是整数或浮点

  • 如果您想成为受虐狂(并且不需要公开实际数组),您可以只使用int[],然后使用和将浮点转换为存储为int的四个字节,反之亦然


  • 您能否添加有关您试图解决的特定问题的更多信息?我的直觉是有一个更简洁的设计,但这很难说,因为我不知道您使用这些int[]和float[]数组的意图。你使用它们的意图是什么?这将告诉你应该选择什么样的设计。听起来很可疑。放一些代码进去看看更广泛的上下文Java浮点是23位精度,.IEEE 32位浮点有24位精度,Java使用该标准。我不明白你在引用什么,说它有23位。对于普通数字,浮点数被移位,因此顶部位为1,因此不需要存储它。浮点中只存储了23位,并隐含了最高位。