C 从函数返回时,小数部分丢失
当从函数中传递十进制数时,我遇到了一个问题-请看一下代码 我在位置2的函数main的参数中搜索数字的函数工作得很好,但如果我调用该函数,它不会返回小数部分。例如,输入为15.25-函数取15.25,但当该值返回到变量时,它显示为15.00。你知道为什么吗 顺便说一句:在这个例子中,我使这个函数简单得多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
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[])