操作 IEEE 754 浮點舍入模式
浮點運算通常涉及對數字進行捨入以近似真實的數學結果。 IEEE 754 標準定義了幾種舍入模式,用於確定浮點數的捨入方式。本文探討了在可移植 C 或 x86 組譯環境中變更舍入模式的有效方法。
標準 C 解
對於可移植 C 程式碼,此解決方案涉及使用C99 函數 fesetround(),允許設定舍入模式。不過,修改後請記得恢復原來的捨入模式。
x86 彙編解決方案
如果您在不支援 C99 的舊平台上工作,您可能需要使用 x86 程式集來操作舍入模式。這涉及在 x87 單元(使用 fldcw 指令)和 SSE(使用 ldmxcsr 指令)中設定舍入模式。
MSVC 特定解決方案
對於 MS Visual C (MSVC),有彙編的替代方案。您可以使用非標準 _controlfp() 函數來變更舍入模式。
舍入模式常數
要指定舍入模式,您需要使用適當的宏常數。以下是捨入模式的標準 C 和 MSVC 名稱的摘要:
Rounding Mode | C | MSVC |
---|---|---|
Nearest | FE_TONEAREST | _RC_NEAR |
Toward Zero | FE_TOWARDZERO | _RC_CHOP |
Positive Infinity | FE_UPWARD | _RC_UP |
Negative Infinity | FE_DOWNWARD | _RC_DOWN |
以上是如何有效更改 C 和 x86 彙編中的 IEEE 754 浮點舍入模式?的詳細內容。更多資訊請關注PHP中文網其他相關文章!