<分区>
好的,我有一个 char
是一个数字。我怎样才能将它转换成 double
?
char c;
我试过 (double)c
,但它转换为零。
有什么想法吗?
标签 c
<分区>
好的,我有一个 char
是一个数字。我怎样才能将它转换成 double
?
char c;
我试过 (double)c
,但它转换为零。
有什么想法吗?
最佳答案
如果您有一个空终止字符串,您希望将其转换为双重使用atof
:
const char *str = "3.14";
double x = atof(str);
printf("%f\n", x); //prints 3.140000
如果你只有一个角色,转换应该有效:
char c = 'a'; //97 in ASCII
double x = (double)c;
printf("%f\n", x); //prints 97.000000
如果字符为零,那么它当然会打印零:
char c = '\0';
double x = (double)c;
printf("%f\n", x); //prints 0.000000
注意:atof
和类似函数不检测溢出并在错误时返回零,因此无法知道它是否失败(不确定它是否设置了 errno
),另请参阅 Keith 关于某些值的未定义行为 的评论,所以关键是您应该使用 strtol
将字符串转换为 int
和 strtod
用于转换为 double
那些有更好的错误处理:
const char *str = "3.14";
double x = strtod(str, NULL);
关于将 char 转换为 double,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13424265/