cooljia 发表于 2020-1-10 10:54:36

乘积得到的结果与实际结果相差1

#include <stdio.h>

int main()
{
      long int i, bonus;
      scanf("%ld",&i);

      if(i <= 200000)
      {
      bonus = (i - 100000) * 0.075;
      printf("奖金总数是%d\n", bonus);
      }

      return 0;
}

输入是:150000

输出是:3749

实际答案不应该是3750吗?为什么会减1?

qq2222081387 发表于 2020-1-10 11:25:42

0.075是浮点数    %d 精度问题吧

ijy 发表于 2020-1-10 12:10:31

可能是编译器的问题吧,我用vc6.0,结果就是3750,不差1呀,

cooljia 发表于 2020-1-10 12:41:26

ijy 发表于 2020-1-10 12:10
可能是编译器的问题吧,我用vc6.0,结果就是3750,不差1呀,

我是虚拟机的CentOS,然后按你说的换成Dev C++确实没事了,谢谢你.
页: [1]
查看完整版本: 乘积得到的结果与实际结果相差1