我正在做一些浮点运算并且有精度问题。对于相同的输入,两台机器上的结果值不同。我读了帖子@为什么我不能乘以浮点数?并阅读网络上的其他材料并了解它与浮点的二进制表示和机器ε有关。但是,我想检查是否有办法解决这个问题/C++ 中浮点运算的一些解决方法??我正在将一个浮点数转换为无符号短存储,并在必要时转换回来。但是,当我将其转换回 unsigned short 时,精度(到小数点后 6 位)在一台机器上保持正确,但在另一台机器上失败。
//convert FLOAT to short
unsigned short sConst = 0xFFFF;
unsigned short shortValue = (unsigned short)(floatValue * sConst);
//Convert SHORT to FLOAT
float floatValue = ((float)shortValue / sConst);