2016-04-04 66 views
0

林其正从数学方程式相同的结果,当我使用功能的问题翻一番。这是我的代码。Ç转换int在功能

#include <stdio.h> 
int main() 
{ 
    int a=5, b=2; 
    double c; 
    c = (double) a/b; 
    printf("%f\n", c); 

    c = Divide(a); 
    printf("%f\n", c); 

    return 0; 
} 

int Divide(int value) 
{ 
    return value =(double) value/2; 
} 

当我运行的代码我得到:

2.500000 
2.000000 

我想获得2.50000两种。我试图改变功能

double Divide(double value) 

没有运气。我新来C和编码一般和Im卡住了。感谢任何能够帮助我的人。

+0

'返回值=(双)值/ 2;'执行浮 - 对oint除法,产生'2.5',然后通过截断将值赋给一个'int',返回'2'。删除'value ='部分将提供预期的行为。 – owacoder

+0

谢谢你的回应。你写的是对我有意义的。我能够使这个功能起作用 – jojonac

回答

1

你有两个问题:第一个必须做的函数返回类型,并返回一个int总是截断浮点值。

第二个问题是你不返回除法结果,你赋值后返回变量value的值,并且因为value是一个整数,你将返回截断值。掉落分配回去吧:return (double) value/2;

+0

谢谢你的回应。我能够在你的帮助下像我想要的那样使这个功能工作。 – jojonac

0

演员a如下,改变返回值类型。

#include <stdio.h> 
int main() { 
    int a=5, b=2; 
    double c; 
    c = ((double) a)/b; 
    printf("%f\n", c); 

    c = Divide(a); 
    printf("%f\n", c); 

    return 0; 
} 

double Divide(int value) { 
    return value = ((double)value)/2; 
} 
+2

铸造具有比划分更高的[运算符优先级](http://en.cppreference.com/w/c/language/operator_precedence),所以额外的括号无关紧要。 –

1
int Divide(int value) 

变化

double Divide(double value) 

,因为你的价值是整型的,所以它分配一个整数值的浮动,这将是2.0

+0

谢谢你的回应。在编码中,似乎有数百万种方法来剥皮猫。我能够按照您的反应和其他一些方式按预期工作。 – jojonac

0

你可以这样做:

#include <stdio.h> 

double divide(double value) { 
    return value = value/2.0; 
} 

int main() 
{ 
    double a=5.0, c; 
    int b=2; 

    c = (double) a/b; 
    printf("%f\n", c); 

    c = divide(a); 
    printf("%f\n", c); 

    return 0; 
}