Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 从函数返回时,小数部分丢失_C - Fatal编程技术网

C 从函数返回时,小数部分丢失

C 从函数返回时,小数部分丢失,c,C,当从函数中传递十进制数时,我遇到了一个问题-请看一下代码 我在位置2的函数main的参数中搜索数字的函数工作得很好,但如果我调用该函数,它不会返回小数部分。例如,输入为15.25-函数取15.25,但当该值返回到变量时,它显示为15.00。你知道为什么吗 顺便说一句:在这个例子中,我使这个函数简单得多 int arg_find(char *argv[]) { double result; int i = 0; double dec = 1; while ((ar

当从函数中传递十进制数时,我遇到了一个问题-请看一下代码

我在位置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++;
        }
    }
}

原因非常简单和明显,因为您的函数
arg\u find
返回的是一个整数,而不是浮点,因此您将面临问题

您可以尝试将其定义为:

double arg_find(char *argv[])
而不是

int arg_find(char *argv[])

将您的功能定义为

double arg_find(char *argv[])

arg\u find
返回一个整数,而不是一个浮点数。真的,你期望什么?名为
int
的数据类型是否包含非整数?用你的常识吧。一定要用它。哦,天啊,我真的改变了一切。。这太棒了,我忘了函数是pasing int。看在上帝的份上-非常感谢:)@Croolman:-不客气。如果这对你有帮助,一定要接受这个答案!
double arg_find(char *argv[])