C语言舍入错误-硬件?软件我吗?



首先,我的环境:

经销商ID: Bunsenlabs描述:BunsenLabs GNU/Linux 10.5(锂)版本:10.5代号:克星

线程模型:posixgcc version 8.3.0 (Debian 8.3.0-6)

我正在编写一个旧的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 example.c

把303466美元加到95美分应该是303466.95,但是打印结果是303466.937500。

这是一个会计程序,不能少收一分钱。

对我来说这看起来像是一个bug,但是我已经很久没有使用C程序了,所以我会说&;user error&;是这里最相似的问题。但这似乎是如此基本,我不知道我犯了一个错误。

如果错误不是我的,是H/W还是S/W。我在2个不同的主机上运行了这个程序,所以它让我相信这是一个S/W错误。但是在哪里?

有人能看到我的代码中的错误吗?

%。1f =小数点后一位%。2f =小数点后两位…

printf("美元(% d) +美分(%)=% .2ffcents n"美元,acntBalance);

相关内容

  • 没有找到相关文章

最新更新