C#改变制作计划

时间:2017-02-10 11:07:20

标签: c#

为家庭作业制作一个改变计划,它必须在输入金额时返回更改金额(它基于澳大利亚货币),并且我已经达到了五十美分。当计算更改并且程序必须返回值为20美分,10美分或5美分的更改时,程序会冻结

> install.packages("TreeTagger", repos = "https://cran.rstudio.com")
Installing package into ‘C:/Users/A579856/Documents/R/win-library/3.3’
(as ‘lib’ is unspecified)
Warning in install.packages :
  package ‘TreeTagger’ is not available (for R version 3.3.2)

2 个答案:

答案 0 :(得分:0)

如果您输入金额< 0.05或您收到的金额<改变后的结果为0.05。

原因在于:如果您的变更值为> 0,但是< 0.05你将永远陷入困境。

while (change > 0)
{
    ...
    if (change >= fivecent)
    {
        txtChange.Text += "1x 5c \r\n";
        change = change - fivecent;
    }
}

答案 1 :(得分:0)

对于新手来说,这可能很难发现。您的代码的问题是您使用了错误的DataType。您应该使用double

而不是decimal
decimal change = Convert.ToDouble(txtOffered.Text) - Convert.ToDouble(txtDue.Text);
// MessageBox.Show(change.ToString());            
decimal hund = 100;
decimal fifty = 50;
decimal twent = 20;
decimal ten = 10;
decimal five = 5;
decimal two = 2;
decimal one = 1;
decimal fifcent = 0.50m;
decimal twentcent = 0.20m;
decimal tencent = 0.10m;
decimal fivecent = 0.05m;

这样,您的代码就不会冻结。

要解释此问题,问题是,使用double 0.25 - 0.20的结果是...... 0.049999999999999989。这是因为double使用浮点值,这可能导致舍入问题。如果您想了解有关浮点计算的更多信息,请查看here