问题标签 [strtod]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
1059 浏览

python - Python 等价于 C strtod

我正在将 C++ 程序的一部分转换为 Python,但是在替换 C 函数strtod时遇到了一些麻烦。我正在处理的字符串由简单的数学方程式组成,例如“KM/1000.0”。问题是常量和数字都是混合的,因此我无法使用 float()。

如何编写 Python 函数来模拟strtod返回转换后的数字和下一个字符的位置?

0 投票
2 回答
726 浏览

c++ - Integer 和 Double 数据类型的输入验证

因为我发布这个问题时代码中有错误,所以这不是一个好问题。我已将其删除并替换为指向正确解决方案的链接。

输入验证的正确解决方案

0 投票
8 回答
219962 浏览

c - 如何将字符串转换为浮点数?

我希望输出应该是4.08000000而我只有4.00000000.

有没有办法得到点后面的数字?

0 投票
2 回答
431 浏览

c - 将 C 字符串转换为双精度数时的奇怪行为

我无法理解 C 的规则,即打印双精度或将字符串转换为双精度时假定的精度。以下程序应该说明我的观点:

当我编译和运行这个程序(在带有 gcc 4.5.2 的 Core 2 Duo 上)时得到的输出是:

我的问题是:

  1. 为什么 x 打印为非零数字?我知道编译器有时会出于计算目的将双精度类型提升为更高精度的类型,但 printf 不应该将 x 视为 64 位双精度类型吗?
  2. 如果 C 库偷偷使用扩展精度浮点数,为什么 strtod 在尝试转换这些小数时设置 errno?为什么它会产生正确的结果呢?
  3. 这种行为只是一个错误,是我的特定硬件和开发环境的结果吗?(不幸的是,我目前无法在其他平台上进行测试。)

谢谢你提供的所有帮助。当我得到反馈时,我会尝试澄清这个问题。

0 投票
2 回答
1427 浏览

c++ - strtod 不会在错误的输入上设置 errno

g++ (Ubuntu/Linaro 4.6.1-9ubuntu3) 4.6.1

输入错误时errno保持 0。

编辑:下一步工作正常:

0 投票
1 回答
2028 浏览

c++ - Valgrind:使用 c_str 和 strtod 进行“无效读取”

我使用 strtod() 来转换一些输入字符串。在使用 valgrind 检查我的代码时,我遇到了“8 号大小的无效读取”。如果 b 以“i”或“n”开头,则会显示该消息,这就是我目前发现的。此外,如果我直接创建一个 const char*(不调用 c_str()),strtod 似乎也可以。继承人的代码:

和(详细的)valgrind 输出:

有错误还是我错过了什么?

0 投票
3 回答
131273 浏览

c - 将 char* 转换为 float 或 double

我有一个从文件中读取的值并存储为 char*。该值是货币数字、#.##、##.## 或###.##。我想将 char* 转换为可以在计算中使用的数字,我尝试了 atof 和 strtod,它们只是给了我垃圾数字。这样做的正确方法是什么,为什么我做错了?

这本质上就是我正在做的,只是从文件中读取 char* 值。当我打印出 temp 和 ftemp 变量时,它们只是垃圾,巨大的负数。

另一个编辑:

我正在 gcc 中运行这个

}

我的输出是价格:3344336.000000, 3344336.000000

编辑:这是我的代码

我的输入文件是非常简单的名称,值对是这样的:

价值为美元金额

已解决:谢谢大家,我使用的是 %d 而不是 %f 并且没有包含正确的标题。

0 投票
2 回答
256 浏览

c - strtod 定义和传递指针的类型

从定义double strtod ( const char * str, char ** endptr );

C 参考站点为这个强大的功能提供了一个示例:

如果endptr应该是类型char **,为什么char *pEnd在这里使用?而不是char **pEnd

0 投票
4 回答
1893 浏览

c - 字符串长度有限的 strtod

如果我想将 char 数组中的前 3 个字符解析为双精度字符,忽略以下字符,我真的需要这样做吗?

难道没有这样的函数strtod允许您指定它应该搜索数字的最大字符串长度吗?

编辑:我希望它打印1.2(它目前正在打印),而不是 1.23

0 投票
1 回答
297 浏览

c - 为什么当电流已经超过 DBL_MAX*0.1 时 strtod 只是忽略数字

源代码(我不确定这是哪个版本,它只是网站的摘录)。在 for 循环的最开始,评论说“我们已经获得了足够的数字,我们将忽略其余的”。

为什么这是真的?为什么这个“不一定意味着结果会溢出。 ”?