我正在做一些浮点运算,并有精度问题。相同输入的结果值在两台机器上不同。我阅读@Why can't I multiply a float?的帖子,并阅读网络上的其他资料&了解到它是与浮点的二进制表示和机器epsilon有关。但是,我想检查是否有办法解决这个问题/一些解决C++浮点运算?我正在将float转换为unsigned short存储,并在必要时转换回来。但是,当我将它转换回无符号短整型时,精度(至6个小数点)在一台机器上保持正确,但在另一台机器上失败。在C++中有浮点算术问题的解决方案吗?
//convert FLOAT to short
unsigned short sConst = 0xFFFF;
unsigned short shortValue = (unsigned short)(floatValue * sConst);
//Convert SHORT to FLOAT
float floatValue = ((float)shortValue/sConst);
究竟是什么问题?事实上,乘法结果在两台不同的机器上稍有不同,这本身并不是问题。为什么它构成你的一个? – 2010-10-28 14:50:34
由于没有提到实际问题,因此无法正确回答此问题。投票结束,这不是一个真正的问题。 – 2010-10-28 15:59:09
更新了问题! – 2010-10-28 16:08:07