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[]数组的意图。你使用它们的意图是什么?这将告诉你应该选择什么样的设计。听起来很可疑。放一些代码进去看看更广泛的上下文Java浮点是23位精度,.IEEE 32位浮点有24位精度,Java使用该标准。我不明白你在引用什么,说它有23位。对于普通数字,浮点数被移位,因此顶部位为1,因此不需要存储它。浮点中只存储了23位,并隐含了最高位。