原标题:《No portable way to detect string-to-float conversion errors in standard C》 评分: 22 | 作者: signa11 💭 连小数点是逗号都不确定,谁还敢叫它标准转换? 🎯 讨论背景 讨论源于 C 标准库 `strtod `(把字符串转换为 `double ` 的函数)在转换失败、overflow 与 underflow 时,缺少统一且可移植的错误判定方式。传统做法通常结合返回值、`errno ` 和结束指针判断,但这些信号不如显式结果类型清晰,且不同实现与边界条件会增加复杂度。`sscanf `(C 的格式化扫描函数)和其他 C 数值转换接口还会受 `locale `(决定小数点等格式的本地化状态)影响,令面向固定文本格式的程序产生跨机器风险。评论因此转向 `std::from_chars `(C ++ 的无 locale 数值转换接口)、自带数学库,以及 IEEE-754(主流二进制浮点运算标准)下的精度和范围语义。 📌 讨论焦点 errno 式错误报告的 API 缺陷 评论者认为,`strto