2016-04-04 97 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; 
}