c++ - 当给定相同的字符串输入时,`std::atof` 是否保证产生相同的输出?
问题描述
我正在从文件中读取双精度值作为字符串并用std::atof
. 之后,我将这些值用作无序映射中的键。它似乎工作正常,但它保证在 100% 的情况下工作吗?
我问这个问题是因为如果你用它做任何算术运算,产生相同的双精度值是非常困难的。
std::atof
如果多次给出相同的字符串值,是否保证产生完全相同的双精度值?
解决方案
您可以DBL_DIG
通过std::string
. 通常DBL_DIG
为 15,但这取决于您平台上使用的浮点方案。
这和你问的不太一样。例如,在某些平台上,可以在运行时更改浮点舍入模式,因此即使在程序执行期间您也可能会得到不同的结果。然后,您已经签署了零、次正规数和 NaN(以各种形式)来担心。
陷阱太多了。我不习惯使用浮点类型作为映射键。std::string
将用作地图中的键会好得多。
推荐阅读
- json - React + Next js:组件中的交叉 json 值
- ios - AVAudioSequencer - 如何在播放结束时收到通知
- javascript - 如何将值返回到另一个 Vue 文件的脚本中?或者如何将返回值发送到另一个 Vue 文件中?
- ios - Firestore 在文档中的数组中搜索字符串
- node.js - 水平可扩展游戏状态nodejs
- python - Python - elif 语法错误 - 这有什么问题?
- flutter - Flutter:删除所有 SnackBar
- javascript - 使用 Google Apps 脚本隐藏行
- spring-boot - 无法让 Netbeans 项目承认现有的 Tomcat 或 Glassfish 服务器
- laravel-6 - Backpack 4.0 基础配置密钥“密码”