gpt4 book ai didi

c - 如何将 char* 转换为带逗号(小数点)的数字函数?

转载 作者:太空宇宙 更新时间:2023-11-04 04:19:32 27 4
gpt4 key购买 nike

我编写了 change() 来帮助我将字符串转换为 double

例如:如果字符串是“5.5”,我希望数字是5.5。如果字符串是“0.0”,我希望数字是0。另一个例子:“50”到50。

现在的问题是,当我将 change() 与库 math.h 中的 pow() 一起使用时,一切正常,我用大量输入,一切都很完美。

测试示例:

change("5.0") 给我 5
change("1.5") 给我 1.5

因为我不能使用我编写的 power() 的库数学,但是当我测试 change() 时,现在我没有得到输出。我认为它陷入了无限循环。

这件事发生的原因有什么帮助吗?

double change(char* Point) {
int count = 0;
double res = 0;
while (*Point == '0') {
Point++;
}
while (*Point != '.' && *Point) {
count++;
Point++;
}

int num1 = 0;
for (int i = 0; i < count; i++) {
Point--;
num1 = (*Point - '0') * (power(10, i));
}

int i = -1;
while (*Point != '.' && *Point) {
Point++;
}
double num2 = 0;
if (!*Point) {
return res = (double) num1 + num2;

}
Point++;
while (*Point) {
num2 = (double) (*Point - '0') * (double) (power(10, i));
i--;
Point++;
}
res = (double) num1 + num2;

return res;
}

我还写了函数power:

int power(int base,int exp)
{
int result=1;
if(exp == 0){
return 1;
}
while (exp != 0)
{
result=result*base;
exp--;
}
return result;
}

最佳答案

因为你在 change 函数中调用了函数 power(10,i) ,而 i 是一个负值。您可以通过在幂函数中添加 if 语句来解决此问题

if (exp < 0) {
exp = 0 - exp;
return(1/power(base,exp));
}

编辑:您还必须更改幂函数以返回 double 而不是 int

关于c - 如何将 char* 转换为带逗号(小数点)的数字函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48114348/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com