- 此问题在此处已有答案**:
(31个答案)
2天前关闭。
首先,我的环境:
经销商ID:本生实验室描述:BunsenLabs GNU/Linux 10.5(锂)版本:10.5代号:破坏者
螺纹型号:posix gcc版本8.3.0(Debian 8.3.0 - 6)
我在一个旧的C程序上工作,遇到了一个舍入错误。我已经将代码复制到下面的程序"example.c"中:
main()
{
float acntBalance;
int dollars;
int cents;
float fcents;
dollars = 303466;
cents = 95;
fcents = cents * 0.01;
acntBalance = dollars + fcents;
printf("Dollars(%d) + Cents(%f) = %f \n",dollars,fcents,acntBalance);
}
并使用GNU编译器编译了此代码,如下所示:
gcc-w-g-o示例示例. c
95美分加上303466美元应该是303466.95,但打印出来是303466.937500。
这是一个会计程序,1美分的折扣是不可接受的。
这看起来像是一个bug,但是我已经很久没有写C程序了,所以我会说"用户错误"是这里最常见的问题,但是这看起来太基本了,我不知道我哪里出错了。
如果错误不是我的,是硬件还是软件。我已经在两个不同的主机上运行了这个程序,所以我相信这是一个软件错误。但是在哪里呢?
有人能看到我代码中的错误吗?
1条答案
按热度按时间6rqinv9w1#
%.1f =一位小数%.2f =两位小数...
printf(“美元(%d)+美分(%f)=%.2f\n”,美元,美分,帐户余额);