我正在做一些浮點運算,並有精度問題。相同輸入的結果值在兩臺機器上不同。我閱讀@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