C語言分數參與運算的表達式

2020-08-10 11:25:38

我們要計算一個物理自由落體運動的3s的位移,設重力加速度爲10m/s^2

​公式爲h = 1/2 g t^2

如果用小數0.5表示1/2

程式碼如下:

#include<stdio.h>
#include<math.h>
#define g 10
#define t 3
int main(){
    float h;
    h = 0.5 * g * pow(t, 2);
    printf("h = %0.2f", height);
    return 0;
}

輸出結果:

h = 45.00

將0.5改爲1/2

程式碼如下:

#include<stdio.h>
#include<math.h>
#define g 10
#define t 3
int main(){
    float h;
    h = 1/2 * g * pow(t, 2);
    printf("h = %0.2f", height);
    return 0;
}

輸出結果:

h = 0.00

爲什麼沒有輸出正確結果?
問題出在1/2,運算表達式中出現兩個整型數據的相除,相除結果爲整型,在此1/2的結果爲0,所以給h賦的值最終爲0

如何使分數參與運算的表達式正確?

分數帶上.0表示浮點數

#include<stdio.h>
#include<math.h>
#define g 10
#define t 3
int main(){
    float height;
    height = 1.0/2.0 * g * pow(t,2);
    printf("height = %0.2f", height);
}

輸出結果:

h = 45.00