Здравствуйте я в настоящее время после вычислений с C# и .NET Framework книги, и я с трудом на одном из упражнений, который являетсяРасчет общей суммы изменения заданного
Написать C# программу, внести изменения. Введите стоимость предмета, стоимость которого меньше одного доллара. Вывод монеты, указанные как изменения, с использованием кварталов, копейки, никеля и пенни. Используйте наименьшие монеты . Например, если деталь стоил 17 центов, то изменение будет три четверти, один никель, и три гроши
Поскольку я все еще пытаюсь понять программированию на C# лучший метод, который я придумал это с помощью в то время как цикл.
while(costOfItem >= 0.50)
{
costOfItem -= 0.50;
fiftyPence++;
}
У меня это для каждого из пенсов 20,10,5 и т.д .. Я проверка, если сумма больше или равен 50 пенсов, если да, то я сократить 50 пенсов от суммы заданный пользователем, и добавьте 1 к переменной fiftypence.
затем он перемещается на следующий цикл while, который у меня есть для каждой заготовки. Проблема в том, что где-то вдоль линии одна из циклов отнимает, скажем, 20 пенсов, а costOfItem становится чем-то вроде «0.1999999999999», тогда он никогда не опускается до 0, что должно привести к правильной сумме изменений.
Любая помощь приветствуется, пожалуйста, не предлагайте сложные процедуры, которые я еще рассмотрел.
Какой тип единицы вы используете за предоставленные деньги? – Mindstormer
Какой тип данных вы используете для 'costOfItem'? Похоже на его 'float', если это правда, вы должны попробовать« decimal' вместо этого. – mrtig
Для представления денег вам нужно использовать 'decimal'. Типы с плавающей точкой, такие как 'double' и' float', не подходят и приведут к таким проблемам. См. [Этот связанный вопрос] (http://stackoverflow.com/questions/1165761/decimal-vs-double-which-one-should-i-use-and-when). –