在一個跨平臺的計算器應用程序上工作時,我只注意到在W32上,NaN/Inf值被轉換成字符串的方式不同於OSX/linux。即 。我如何讓printf在w32上使用'nan'?
linux/OSX使用nan
rsp inf
,而W32使用的東西類似於1.#INF
resp。 1.#QNAN
。
什麼是在所有平臺上獲得相同表示的標準方法?
我想避免手動檢查值isnan()
和isinf()
和硬編碼字符串表示inf
resp nan
。
(我在What is the difference between IND and NAN numbers上看到一些評論,說實際的「罪魁禍首」是libc的實現,而不是平臺)。
只是沒有一個,沒有標準要求double值的* string *表示。甚至沒有正常的雙重價值觀,有時候是一段時間,有時候也是逗號。 MSVC的表現相當不錯,你可以使它更[更有趣](https://blogs.msdn.microsoft.com/oldnewthing/20130228-01/?p=5103):)你必須做到這一點一致你自己。 –
竅門是什麼,你可能也需要相反的 - 改變文本 - 以及它的所有變種 - 成NaN。 – chux