关于在 C# 中获取故障的程序

Program about getting breakdown in 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();

错误说我无法将 double 转换为 int,所以我尝试通过转换来转换它

change = (double) change % .25;

还是报错..

使用双变=0;而不是 int change = 0;

已编辑

最初进行双重更改 = 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;

否则此时您将删除小数值

但您缺少对 int 的强制转换

twenty = (int) change / 20;

模块乘以 1 将再次给出相同的值,使用新变量 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 美分,它将代表 .25 美分 = 1,0.05 美分 = 0, .01 美分= 4

终于明白了!

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;