簡體   English   中英

浮點表示形式是否與C ++中的編譯器相關?

[英]Is floating point representation compiler-dependent in C++?

問題在標題中。 看來,我交付給客戶的軟件具有不同的行為,具體取決於是否以整數或浮點形式傳遞的某些參數。 我使用MinGW為我的客戶構建了一個DLL,他將其集成到了Visual Studio項目中,該項目使用了其他編譯​​器(不知道,我猜這是VS的標准編譯器)。

難道他和我所代表的浮游物不同嗎?

感謝大家的注意,查爾斯

是的,浮點表示形式取決於編譯器。

從理論上講,您可以使用std::numeric_limits來確定表示的主要方面,例如它是IEEE 754,還是二進制還是十進制。

實際上,除了內存布局之外,您不能依賴它,因為在主編譯器g ++中,浮點運算的語義會受到優化選項的強烈影響(例如, NaN是否等於其自身)。

即在實踐中,它不僅取決於編譯器,而且還取決於選項。

給定平台的編譯器通常會符合該平台的浮點標准內存布局,例如Windows中的IEEE 754(該標准起源於PC平台)。 因此,例如,在g ++和Visual C ++之間進行交換時,浮點值通常應該可以正常工作。 一個例外是g ++ long double映射到80位IEEE 754,而Visual C ++將double映射到普通double (即64位),這可能會給您帶來麻煩。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM