【发布时间】:2017-09-06 02:08:07
【问题描述】:
在跨平台计算器应用程序上工作时,我注意到在 W32 NaN/Inf 值转换为字符串的方式与在 OSX/linux 上不同。 即。
linux/OSX 使用nan rsp inf,而W32 使用类似1.#INF 的东西。 1.#QNAN.
在所有平台上获得相同表示的规范方法是什么?
我想避免使用 isnan() 和 isinf() 手动检查值并硬编码 inf 和 nan 字符串表示形式。
(我在What is the difference between IND and NAN numbers 中读到一些评论说,真正的“罪魁祸首”是 libc 实现,而不是平台)。
【问题讨论】:
-
没有,没有标准要求双精度值的 string 表示。甚至不是正常的双精度值,有时是句点,有时是逗号。 MSVC 表示相当不稳定,您可以将其设为 lot more wonkier :) 您必须自己使其保持一致。
-
诡计多端的是,您可能还想要反过来——将文本及其所有变体——更改为 NaN。