我在从函数传递十进制数时遇到问题 - 请查看代码。
我在位置 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
最佳答案
原因非常简单明了,因为您的函数 arg_find
返回一个整数而不是 float ,因此您面临问题。
您可以尝试将其定义为:
double arg_find(char *argv[])
而不是
int arg_find(char *argv[])
关于c - 从函数返回时小数部分丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20166773/