计算混乱

时间:2013-05-05 15:46:14

标签: c

此程序计算折扣。如果我将变量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);
    }

}

2 个答案:

答案 0 :(得分:2)

priceperitem更改为int会因整数除法而产生不同的结果。

更改discount=quantity*priceperitem*10/100;

discount=quantity*priceperitem*10/100f;

答案 1 :(得分:0)

如果它从和int更改为浮点数,它将不会考虑小数位,也许这是由于整数除法更改而导致的答案更改