整數型態的除法
對新手來說很重要的觀念!
請思考的程式碼印出結果,究竟會印出0.5或是0?
#include <stdio.h>很多新手應該會選擇0.5吧!確實~以人類思考角度來看0.5應該是正確的,可是在C語言看來0才是正確解答。
int main() {
int a = 10 ;
int b = 20 ;
printf("%f\n", a/b) ;
system("pause") ;
return 0 ;
}
在C語言中,除法分為整數除法與浮點數除法。
- 整數除法
電腦僅會算到整數值,至於小數(分數)部分直接省去,並且是無條件捨位。 - 浮點數除法
電腦會一路除下去,直到表示位數的最小位數,採用四捨五入。
那究竟什麼時候採用整數除法又什麼時候採用浮點數除法呢?當然不是看電腦心情隨機決定XD
端看除法兩邊的運算元來決定,如果除法的兩個運算子其中一個為浮點數型態(float或double)則電腦就會採用浮點數除法,否則就採用整數除法。上面的例子會採用整數除法,原因是變數a與b都是整數型態,因此採用整數除法。
接著再看以下範例,答案將會是0.666667。
#include <stdio.h>
int main() {
float a = 2 ;
float b = 3 ;
printf("%f\n", a/b) ;
system("pause") ;
return 0 ;
}