为家庭作业制作一个改变计划,它必须在输入金额时返回更改金额(它基于澳大利亚货币),并且我已经达到了五十美分。当计算更改并且程序必须返回值为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)
答案 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。