微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

atof 和 strtod 的工作方式有什么不同吗?

如何解决atof 和 strtod 的工作方式有什么不同吗?

我知道 strtod()atof() 函数用于将字符串转换为双精度。

但我无法弄清楚这两个函数间的区别。

这两个功能有什么区别吗,如果有,请告诉我...

提前致谢。

解决方法

来自man page on double atof(const char *nptr)

atof() 函数将 nptr 指向的字符串的初始部分转换为 double。行为与

相同
    strtod(nptr,NULL);

除了 atof() 不检测错误。

为什么不能检测错误?好吧,因为 double strtod(const char *nptr,char **endptr) 的第二个参数用于指向最后一个无法转换的字符,因此您可以相应地处理这种情况。如果字符串已成功转换,endptr 将指向 \0。使用 atof,它被设置为 NULL,所以没有错误处理。

使用 strtod 进行错误处理的示例:

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    const char *str = "1234.56";
    char *err_ptr;
    double d = strtod(str,&err_ptr);
    if (*err_ptr == '\0')
        printf("%lf\n",d);
    else
        puts("`str' is not a full number!");

    return 0;
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?