如何将字符串转换成浮点型数

[复制链接]
1572|10
 楼主| 星辰大海不退缩 发表于 2023-12-17 16:00 | 显示全部楼层 |阅读模式
atof(将字符串转换成浮点型数)
相关函数 atoi,atol,strtod,strtol,strtoul

表头文件 #include <stdlib.h>

定义函数 double atof(const char *nptr);

函数说明 atof()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数 字或正负符号才开始做转换,而再遇到非数字或字符串结束时 ('\0')才结束转换,并将结果返回。参数nptr字符串可包含正负 号、小数点或E(e)来表示指数部分,如123.456或123e-2。

返回值 返回转换后的浮点型数。

附加说明:atof()与使用strtod(nptr,(char**)NULL)结果相同。

范例

  1. #include<stdlib.h>
  2.      main()
  3.      {
  4.      char *a=”-100.23”;
  5.      char *b=”200e-2”;
  6.      float c;
  7.      c=atof(a)+atof(b);
  8.      printf(“c=%.2f\n”,c);
  9.      }

执行 c=-98.23

tpgf 发表于 2024-1-15 10:48 | 显示全部楼层
这个只能是将特定类型的字符串转换成浮点数吧
八层楼 发表于 2024-1-15 11:57 | 显示全部楼层
如果当前字符串是十六进制数怎么办呢
guanjiaer 发表于 2024-1-15 18:14 | 显示全部楼层
这种直接转换的函数占用的资源多吗
观海 发表于 2024-1-15 19:00 | 显示全部楼层
都可以识别什么进制数据的字符串呢
晓伍 发表于 2024-1-15 20:33 | 显示全部楼层
如何识别这个e是e而不是E呢
磨砂 发表于 2024-1-15 21:11 | 显示全部楼层
这个是调用的系统固有的函数吗
xyz549040622 发表于 2024-1-15 22:53 | 显示全部楼层
在 C 语言中,可以使用标准库函数 strtod, strtof 或 atof 来将字符串转换成浮点型数。
strtod 和 strtof 函数都提供了错误处理的机制,可以通过检查 endptr 的值来判断转换是否成功进行。如果 endptr 等于原始字符串的指针,那么表示字符串中没有找到可转换的数字。

一般来说,使用 strtod 或 strtof 比使用 atof 更安全,因为 atof 不提供任何错误处理机制。如果输入字符串不包含有效的浮点数表示,atof 可能会返回 0.0,但你无法确定这是因为字符串表示的是 0.0,还是因为发生了错误。

在实际应用中,选择合适的函数取决于你对精度的需求(是否需要 double 或 float)以及是否需要对转换过程进行错误检查。
xyz549040622 发表于 2024-1-15 22:54 | 显示全部楼层
磨砂 发表于 2024-1-15 21:11
这个是调用的系统固有的函数吗

是的,调用的是c语言标准库的函数,当然也不能叫做是系统固有的函数,只要是调用,肯定就是固有的函数。
xyz549040622 发表于 2024-1-15 23:01 | 显示全部楼层
八层楼 发表于 2024-1-15 11:57
如果当前字符串是十六进制数怎么办呢

如果是16进制的,可以使用 strtol 或 strtoul 函数来将一个以 16 进制形式表示的字符串转换为一个 long 或 unsigned long 类型的数值。然后使用联合体来读数据变为浮点数。
guijial511 发表于 2024-1-16 07:47 来自手机 | 显示全部楼层
C语言自带函数库
您需要登录后才可以回帖 登录 | 注册

本版积分规则

302

主题

2831

帖子

6

粉丝
快速回复 在线客服 返回列表 返回顶部