从函数返回时,十进制部分会丢失

时间:2013-11-23 19:22:46

标签: c

从函数传递十进制数时遇到问题 - 看看代码。

这个函数,我在位置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

2 个答案:

答案 0 :(得分:0)

原因非常简单明了,因为你的函数arg_find返回一个不是浮点数的整数,因此你遇到了问题。

您可以尝试将其定义为:

double arg_find(char *argv[])

而不是

int arg_find(char *argv[])

答案 1 :(得分:0)

将您的功能定义为

double arg_find(char *argv[])