我正在将一个uint32_t转换为float,但不改变实际位。
只是为了确保:我不想强制转换它。因此
我将使用这个方法将我的(伪)随机数转换为浮点数,而不需要进行不必要的计算。
目前我正在做的事情已经可以运行,就是:
只是为了确保:我不想强制转换它。因此
float f = (float) i
是我想做的完全相反的操作,因为它会改变位。我将使用这个方法将我的(伪)随机数转换为浮点数,而不需要进行不必要的计算。
目前我正在做的事情已经可以运行,就是:
float random_float( uint64_t seed ) {
// Generate random and change bit format to ieee
uint32_t asInt = (random_int( seed ) & 0x7FFFFF) | (0x7E000000>>1);
// Make it a float
return *(float*)(void*)&asInt; // <-- pretty ugly and nees a variable
}
问题: 现在我想摆脱asInt
变量,并且想知道是否有更好/不那么丑陋的方法,而不是获取此变量的地址,两次进行转换并再次取消引用?