-1

このプログラムは割引を計算します。変数 priceperitem を int に変更し、コード (書式指定子など) に必要な変更を加えると、割引を計算するステートメントからまったく異なる答えが得られます。この背後にあるロジックを説明できる人はいますか?一生懸命試しましたが、できませんでした何が悪いのか分かりますか?? .. 演算子の結合性に関連している可能性がありますか..それとも単なる除算ですか... ???

#include<stdio.h>

main()
{
    int quantity;
    float priceperitem,expense,discount;

    printf("Price Per Item =");
    scanf("%f",&priceperitem);

    printf("How much quantity do you want =");
    scanf("%d",&quantity);

    if(quantity>1000)
    {
        discount=quantity*priceperitem*10/100;
        printf("The discount is %f\n",discount);
        expense=quantity*priceperitem - discount;
        printf("The discounted price is %f",expense);
    }

}
4

2 に答える 2

3

を変更するpriceperitemint、整数除算により異なる結果が得られます。

変化するdiscount=quantity*priceperitem*10/100;

discount=quantity*priceperitem*10/100f;

于 2013-05-05T15:50:36.963 に答える
0

int から float に変更された場合、小数点以下の桁数は考慮されません。おそらく、これは整数除算の変更による回答の変更です

于 2013-05-05T15:51:16.740 に答える