Tom*_*Tom 3 java floating-point int
众所周知,float和int都需要4个字节来存储Java中的原始数组.因此,浮点值可以映射到具有相同内部32位表示的int值.
如何在float和int之间建立一个计算成本低廉的一对一映射?例如,映射可以将3.2345f映射到-67567575并将-67567575映射回接近3.2345f的值,并且可以覆盖大多数浮点值(可以忽略NaN或无穷大).映射的顺序或含义无关紧要.
(我需要这个的原因是为了解决我正在实现的jcuda内核函数的问题;使用其他方法对我的问题更麻烦.需要直接回答这个问题,而不是推荐其他方法等等.)
您可以使用float-> Float.floatToIntBits(floatValue)int转换和Float.intBitsToFloat(intValue)int-> float转换.作为intBitsToFloat状态的javadoc :
public static float intBitsToFloat(int bits)
返回与给定位表示相对应的float值.
和另外一个:
public static int floatToIntBits(float value)
根据IEEE 754浮点"单一格式"位布局返回指定浮点值的表示形式.