我写了下面的代码。它应该将像 "88"
这样的字符串转换为 double 值 88
并打印它
void convertType(char* value)
{
int i = 0;
char ch;
double ret = 0;
while((ch = value[i])!= '\0')
{
ret = ret*10 + (ch - '0');
i++;
}
printf("%d",ret); //or %lf..
}
// input string :88
但它总是打印0
。但是当我将 ret 类型更改为 int
时,它工作正常。当类型为 float
或 double
时,它会打印 0
。那么,为什么我会得到这些模棱两可的结果?
最佳答案
使用 sscanf
(头文件 stdio.h
或 C++ 中的 cstdio
):
char str[] = "12345.56";
double d;
sscanf(str, "%lf", &d);
printf("%lf", d);
关于将字符串转换为 C 中的 double 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10075294/