2017-02-26 10 views
-2

ここのすべては、関数 "tipConvert(tip)"を除いて私が望む方法で動作します。ヒント計算 - 数値を小数点に置き換えます

15などの数値を.15に変更してパーセント値の10進表記にする必要があります。

#include <stdio.h> 

float tipConvert(int tip); 

int main() 
{ 
    char value; 
    int intValue tip; 
    float bill, result; 

    intValue = 1; 

    while(intValue == 1) 
    { 
     printf("Would you like to calculate a tip: y or n?\n"); 
     scanf("%s", &value); 
     if(value == 'y') 
     { 
      printf("Enter the bill amount:\n"); 
      scanf("%f", &bill); 
      printf("Enter the tip amount as an integer:\n"); 
      scanf("%i", &tip); 
      result = tipConvert(tip)*bill; 
      printf("Tip for %.2f is %.2f\n", bill,result); 
     } 
     else if(value == 'n') 
     { 
      printf("Thank you for using Tip Calculator."); 
      break; 
     } 
     else 
      printf("Please select y or n.\n"); 

    } 
    return 0; 
} 

float tipConvert(int tip) 
{ 
    return tip/100; 
} 
+0

質問のタイトルをあまり一般的ではないようにしてください。 「計算」とは何ですか? –

+0

あなたはdividint 2 intsです。結果はintとして格納されます。したがって、除算の結果が0.xxのようなものである場合、ゼロに丸められます。したがって、tip/100.0を実行してください:これはうまくいくはずです。 –

答えて

1

問題は、intは任意の10進数値を格納することができないということであり、先端/ 100を呼び出すときに、コンパイラは整数除算としてこれを見て、(あなたの例0で)intを返しフロートにいることをキャストその後。

浮動小数点除算を使用するようにコンパイラに指示する最も簡単な方法は、100.0fを使用してintリテラルの代わりにfloatリテラルで除算することです。これで部門が修正されるはずです。
また、先端を浮かべる前にキャストすることもできます。

+0

チップのフロートを読むのが最も単純ではないでしょうか? – stark

+0

もちろん、これを行うこともできます。パラメータをfloatに設定してintを渡すと、floatにキャストされます。 –

関連する問題