在一个跨平台的计算器应用程序上工作时,我只注意到在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