我正在从文件中将 double 值作为字符串读取,并使用 std::atof
解析它们。之后,我将这些值用作无序映射中的键。它看起来工作正常,但它能保证在 100% 的情况下工作吗?
我问这个问题是因为如果您对其进行任何算术运算,则很难产生相同的 double 值。
如果多次给出相同的字符串值,std::atof
是否能保证生成完全相同的 double 值?
最佳答案
您可以通过 std::string
往返具有 DBL_DIG
或更少有效数字的数字。通常,DBL_DIG
为 15,但这取决于您的平台上使用的浮点方案。
这与您所要求的不太相同。例如,在某些平台上可以在运行时更改浮点舍入模式,因此即使在程序执行期间也可能会得到不同的结果。然后您就需要担心符号零、次正规数和 NaN(以各种形式)。
陷阱太多了。我不喜欢使用浮点类型作为 map 键。使用 std::string
作为映射中的键会好得多。
关于c++ - 当给定相同的字符串输入时, `std::atof` 是否保证产生相同的输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63778837/