有关在C中崩溃的程序#
明天我正在检查我的测试..我在程序中遇到了一个问题(我需要创建一个程序来显示输入数量的细目..我有与仙一个问题...)有关在C中崩溃的程序#
Console.Write("Enter amount: ");
double amt = double.Parse(Console.ReadLine());
thou = (int)amt/1000;
change = (int)amt % 1000;
fivehun = (int)change/500;
change = change % 500;
twohun = (int)change/200;
change = change % 200;
hun = (int)change/100;
change = change % 100;
fifty = (int)change/50;
change = change % 50;
twenty = change/20;
change = change % 20;
ten = (int)change/10;
change = change % 10;
five = (int)change/5;
change = change % 5;
one = (int)change/1;
change = change % 1;
twencents = (int)(change/.25);
change = change % .25; //there was an error here.. starting here
tencents = (int)(change/.10);
change = change % .10;
fivecents = (int)(change/.05);
change = change % .05;
onecent = (int)(change/.01);
change = change % .01;
Console.WriteLine("The breakdown is as follows: ");
Console.WriteLine("Php 1000 ={0} ", thou);
Console.WriteLine("Php 500 ={0} ", fivehun);
Console.WriteLine("Php 200 ={0} ", twohun);
Console.WriteLine("Php 100 ={0} ", hun);
Console.WriteLine("Php 50 ={0} ", fifty);
Console.WriteLine("Php 20 ={0} ", twenty);
Console.WriteLine("Php 10 ={0} ", ten);
Console.WriteLine("Php 05 ={0} ", five);
Console.WriteLine("Php 01 ={0} ", one);
Console.WriteLine("Php 0.25 ={0} ", twencents);
Console.WriteLine("Php 0.10 ={0} ", tencents);
Console.WriteLine("Php 0.05 ={0} ", fivecents);
Console.WriteLine("Php 0.01 ={0} ", onecent);
Console.ReadKey();
错误说我不能转换双为int,所以我试着将它转换我的铸造它
change = (double) change % .25;
仍然是一个错误..
EDITED
最初使双变= 0和和分裂AMT到2个变量
double wholeValues = (int)amt;
double decimalValues = amt - wholeValues;
输入然后改变
thou = (int)amt/1000;
change = (int)amt % 1000;
使其作为
thou = (int)wholeValues/1000;
change = (int)wholeValues % 1000;
否则你将在这一点上
舍去小数值,但你缺少一个施放1在
twenty = (int) change/20;
模块为int将再次给出相同的价值,用新的变量decimalValues开始美分计算
one = (int)change/1;
change = decimalValues * 100;
twencents = (int)(change/25);
change = change % 25;
tencents = (int)(change/10);
change = change % 10;
fivecents = (int)(change/5);
change = change % 5;
如果我们使用十进制值模块,你有时可能会与例如不正确的值 结束了。30美分,它将代表0.25美分= 1,0.05美分= 0, 0.01美分= 4
当删除(int)错误时加了.. – Franchette
可以指定其他错误吗? – CloudSL
不能将类型'double'转换为'int'显式转换存在(是否缺少一个转换?)这是错误,但是当我做了你告诉我的时候..另一个错误就像添加到列表 – Franchette
终于明白了!
int thou, fivehun, twohun, hun, fifty, twenty, ten, five, one;
double change = 0; // added this one as suggested
Console.Write("Enter amount: ");
double amt = double.Parse(Console.ReadLine());
thou = (int)amt/1000;
change = amt % 1000; //remove the int (change should be double)
fivehun = (int)change/500;
change = change % 500;
twohun = (int)change/200;
change = change % 200;
hun = (int)change/100;
change = change % 100;
fifty = (int)change/50;
change = change % 50;
twenty = (int) change/20; //added int here
change = change % 20;
ten = (int)change/10;
change = change % 10;
five = (int)change/5;
change = change % 5;
one = (int)change/1;
change = change % 1;
int twencents = (int)(change/0.25);
change = change % 0.25;
int tencents = (int)(change/0.10);
change = change % 0.10;
int fivecents = (int)(change/0.05);
change = change % 0.05;
int onecent = (int)(change/0.01);
change = change % 0.01;
您是否尝试将'.25'改为'.25f'? –
是仍然不能正常工作.. – Franchette
看起来模数表达式的两边必须是'相同类型'。或者你需要自己重载它。请参阅:https://msdn.microsoft.com/en-US/library/0w4e0fzs(v=VS.100).aspx –