C语言064十进制,C语言中十进制数的错误计算

我试图计算float中的十进制数,但如果输入为“0.01”,则不计算。但是,它会计算输入是否为“0.02”但计算错误。这里是代码:C语言中十进制数的错误计算

#include

#include

float MCounting = 0.00;

int MAmountCoin = 0;

float MAmountUsed = 0.00;

int MCoinCount = 0;

float MRemainAmount = 0;

int MCoinOut = 0;

int MTotCoinOut = 0;

int main(void)

{

float Amount;

float MRemainAmount;

do

{

printf("Specify the amount you want in change: ");

Amount = GetFloat();

MRemainAmount = Amount;

}

while (Amount < 0);

if (MRemainAmount > 0 || MRemainAmount < .05)

printf ("\n\n ***** Calculatin for 0.01 *****\n");

{

printf ("MRemainAmount Before calculation: %.2f\n",MRemainAmount);

MCoinOut = MRemainAmount/.01;

printf ("MCoinOut = %i...MTotCoinOut = %i\n",MCoinOut,MTotCoinOut);

MRemainAmount = MRemainAmount - (MCoinOut * .01);

printf ("MRemainAmount = %.2f\n",MRemainAmount);

MTotCoinOut = MCoinOut + MTotCoinOut;

printf ("MTotCoinOut = %i\n",MTotCoinOut);

}

{ printf("Total Coin Out%i\n",MTotCoinOut); }

}

怎么回事,我该如何解决它?

+0

在我的电脑上,用'MRemainAmount * 100'替换MRemainAmount/.01'解决了这个问题。 –

+1

浮点数不是表示货币的好方法,因为它们确实是一个定点值。用美分和整数来考虑可能更好。 (您仍然可以要求用户获得浮点金额并立即将其转换为分。) –

+0

我的问题是,如果我将总金额转换为美分,并且输入是“5.4”,那么我如何处理结果“504”的方式是首先将.25c硬币,然后是.10c,.05c硬币和最后的.01c硬币。 –

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值