stof,strtof是确定性的吗?

男性主义者

我正在从字符串中读取浮点数。它们可以以多种形式编写,因此

float f1 = strtof("999999999999.16");
float f2 = stof("000999999999999.1600000");
assert(f1 == f2);

我是否可以确定断言始终是正确的,而不管开头和结尾的零?分隔符将始终是一个点,stof不处理逗号。

头脑暴乱

在C11标准,在7.22.1.3p9,是这样说的关于C的strtof/ strtod/ strtold(它应该是什么样的C ++版本使用下,至少从判断cppreference):

如果主题序列为十进制形式,并且最多DECIMAL_DIG(以定义<float.h>)有效数字,则结果应正确取整。

鉴于这两个代码行有相同数量的显著数字,它们应该具有相同的行为。但是,这仅仅是基于以下事实的推测:该标准在此完全提到“有效数字”。它在其他任何地方都没有提及,并且标准没有说任何更明确的关于前导(小数点之前)或尾随(小数点之后)零的信息。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章