从函数传递十进制数时遇到问题 - 看看代码。
这个函数,我在位置2的函数main的参数中搜索数字工作得很好,但是如果我调用函数它不会返回小数部分。例如,输入是15.25 - 函数占用15.25,但是当该值返回到变量时,它显示为15.00。你有什么想法吗?
顺便说一下:我为这个例子简化了这个功能。
int arg_find(char *argv[]) {
double result;
int i = 0;
double dec = 1;
while ((argv[2][i] >= '0' && argv[2][i] <= '9') || argv[2][i] == '.') {
// lets say in argv[2] is 14.25
if (argv[2][i] == '.') {
decimal = true;
i++;
}
if (decimal == true) {
dec *= 10;
result += (argv[2][i] - '0')/dec;
i++;
} else {
result = result * 10 + (argv[2][i] - '0');
i++;
}
}
}
现在,当我调用函数
时double result2;
result2 = arg_find(argv); //in result2 is 14
答案 0 :(得分:0)
原因非常简单明了,因为你的函数arg_find
返回一个不是浮点数的整数,因此你遇到了问题。
您可以尝试将其定义为:
double arg_find(char *argv[])
而不是
int arg_find(char *argv[])
答案 1 :(得分:0)
将您的功能定义为
double arg_find(char *argv[])