编写一个接收字符串并返回双浮点值的函数。 fucntion声明看起来像这样
double convertFloat(char s[]);
不要使用strtol()函数或任何其他标准c库函数。编写自己的!...请注意,输入字符串可以采用以下任何一种示例格式:“1.34”,“ - 1.4554”,“6”。
我只是不确定如何处理这个因为我不确定这里有什么问题。如果我必须编写一个函数来找到一个平方根或类似的东西,我可以做它没有问题,但似乎我必须采取所有数字的字符串并将它们转换为浮点数...只是不知道从哪里开始和谷歌搜索类似的东西没有产生任何结果 提前谢谢大家 - 戴维
答案 0 :(得分:0)
首先写下
unsigned int convertUnsignedInt(const char *s);
// e.g. convertUnsignedInt("42") == 42
这有点简单,因为您不必处理负数或分数,但它显示了一般原则。
答案 1 :(得分:-1)
Here是strtof的示例实现。它应该可以帮助您入门并回答您的问题。该代码假定您了解template
。所以,如果你想要一些如此通用的东西,那么你必须学习templates
。
此外,代码可以修改为仅适用于float(通过将type
替换为float
并删除template <typename type>
行。但我已经分享了通用方法。< / p>
P.S。代码遗漏了一些边缘情况,我会留给你找到它们并在完成作业之前修复它。
答案 2 :(得分:-1)
以下是您问题的完整代码。代码是可以理解的。询问您是否对此有任何疑问。
#include <stdio.h>
int power(int n, int m)
{
if (m == 1)
return n;
else
return n * (power(n, m - 1));
}
int getLength(char s[])
{
int i = 0;
for(i = 0; s[i] != '\0'; i++);
return i;
}
double convertFloat(char s[])
{
int len = getLength(s);
int dotpos = 0;
double result = 0.0f;
int n = 0, flag = 0;
if(s[0] == '-')
{
n = 1;
flag = 1;
}
for (; n < len; n++)
{
if (s[n] == '.')
{
dotpos = len - n - 1;
}
else
{
result = result * 10 + (s[n] - '0');
}
}
result /= power(10, dotpos);
if(flag)
return result*-1;
return result;
}
int main()
{
char str[] = "126433.47";
printf("%f", convertFloat(str));
}