【发布时间】:2016-04-22 04:56:54
【问题描述】:
您好,我目前正在关注 Computing with C# 和 .NET Framework 这本书,但我在其中一项练习中遇到了困难,即
编写一个 C# 程序进行更改。输入低于 1 美元的项目的成本。输出 以硬币形式提供的硬币,使用 25 美分、硬币、镍和便士。使用最少的硬币 可能的。例如,如果该物品的价格为 17 美分,则变化将是四分之三,一美分, 还有三便士
由于我仍在尝试掌握 c# 编程,因此我想出的最佳方法是使用 while 循环。
while(costOfItem >= 0.50)
{
costOfItem -= 0.50;
fiftyPence++;
}
我有这些用于 20、10、5 等便士的每一个。 我正在检查金额是否大于或等于 50 便士,如果是,我从用户给出的金额中减少 50 便士,并将 1 加到 50 便士变量中。
然后它进入下一个 while 循环,我对每个便士都有这个循环。问题是,在某个循环带走的某处,假设是 20 便士,costOfItem 变成类似于“0.1999999999999”的东西,然后它永远不会下降到 0,它应该得到正确的变化量。
感谢任何帮助,请不要建议我尚未涵盖的复杂程序。
【问题讨论】:
-
你用什么类型的单位来支付给的钱?
-
costOfItem使用什么数据类型?听起来像是float,如果是这样,你应该试试decimal。 -
你需要用
decimal来代表钱。double和float之类的浮点类型不合适,会导致此类问题。见this related question。
标签: c# loops while-loop