2016-08-31 9 views
0

出力は小数点以下の値であるはずです。私はそれを通過し、それが正しいようだが、出力はゼロとして出てくる。たとえば、それぞれ120,230,20および15を入力した場合、0.017が吐き出されるはずですが、それでもゼロになります。なぜ私のコードは0を出力していますか?

#include <stdio.h> 

#define WALK_CAL 5 
#define STAND_CAL 2 
#define DRINK_CAL 20 
#define FOOD_CAL 40 
#define CALS_PER_POUND 3500 

int main(void) { 

    int walking_min, standing_min; 
    int drinking_min, eating_min; 
    float end_calories; 

    //Get User Input 
    printf("How long were you walking (in minutes) ?\n"); 
    scanf("%d", &walking_min); 

    printf("How long were you standing (in minutes) ?\n"); 
    scanf("%d", &standing_min); 

    printf("How long were you drinking (in minutes) ?\n"); 
    scanf("%d", &drinking_min); 

    printf("How long were you eating (in minutes) ?\n"); 
    scanf("%d", &eating_min); 

    //Evaluate User Input 
    end_calories = (((WALK_CAL*walking_min) + (STAND_CAL*standing_min) - (DRINK_CAL*drinking_min) - (FOOD_CAL*eating_min))/CALS_PER_POUND); 

    //Output Final Value 
    printf("You lost %.3f pounds today!\n", end_calories); 

    return 0; 

} 

ありがとうございます!

+0

整数除算を=浮動小数点数の除算。 – WhozCraig

+0

2つの整数を除算すると、整数(ゼロに丸めます)が得られます。この整数を浮動小数点に代入すると、これを魔法のように変更することはありません。 –

答えて

3

あなたが見ているのは、整数切り捨てです。最終カロリー量の小数部分が途切れています。これを回避する一つの方法は、により、浮動小数点数で、すなわち除算を分割することである:あなたの定数を変更する気にしない場合は、

(CALS_PER_POUND * 1.0) 

それとも、あなたが使用することができます!

#define CALS_PER_POUND 3500.0f 
関連する問題