2016-05-15 6 views
0

Я проверяю мой тест завтра .. и я столкнулся с проблемой в своей программе (мне нужно создать программу, которая отображает разбивку введенной суммы .., и у меня есть проблема с центов ...)Программа о получении пробоя в 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(); 

ошибка говорит, что я не могу преобразовать двойной в целое, так что я попытался преобразовать это мой кастинг он

change = (double) change % .25; 

еще ошибка ..

+0

Вы пытались изменить '.25' на' .25f'? –

+0

Да все еще не работает. – Franchette

+0

Кажется, что две стороны выражения по модулю должны быть «одного типа». Или вам нужно перегрузить его самостоятельно. См. Https://msdn.microsoft.com/en-US/library/0w4e0fzs(v=VS.100).aspx –

ответ

0

EDITED

изначально сделать двойное изменение = 0 и и разделить вход АМТ 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; 

В противном случае вы будет удаление десятичных значений в этой точке

, но вам не хватает актеров в целое на

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, .05 центов = 0, +0,01 цента = 4

+0

при удалении (int) ошибки были добавлены .. – Franchette

+0

Вы можете указать другие ошибки? – CloudSL

+0

не может преобразовать implicity типа 'double' в 'int', существует явное преобразование (вы пропускаете приведение?), Что было ошибкой, но когда я сделал то, что вы мне сказали .. еще одна ошибка, подобная этой, добавленная в список – Franchette

1

Использование do uble change = 0; вместо int change = 0;

+0

больше ошибок, возникающих, когда я сделал что .. – Franchette

0

наконец-то получил это!

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;