浮点计算导致错误的数字

时间:2014-05-08 06:51:26

标签: c

我有以下代码:

#include <stdio.h>
int main()
{
    int hours;
    float check, phw;
    printf("How many hours worked?");
    scanf(" %d", &hours);
    printf("How much do you make an hour?");
    scanf(" %2f", &phw);

    check = phw * (float)hours;
    printf("You have made $%.2f\n", check);
    return 0;
}

进入

  

工作了几个小时? 24

     

你一小时赚多少钱? 7.79

我希望它出现在186.96,但我得到了:

  

你赚了168.00美元

     

程序以退出代码结束:0

我不知道自己做错了什么,我刚开始学习C所以感谢任何帮助。

2 个答案:

答案 0 :(得分:4)

scanf(" %2f", &phw);

应改为

scanf(" %f", &phw);

Here是一个有效的例子。

答案 1 :(得分:2)

scanf(" %2f", &phw);最多读取两个字符。因此,7.79读为7.

更改为scanf(" %4f", &phw);scanf(" %f", &phw);

请参阅this以供参考。