Я пишу программу, которая получает сумму в долларах от ввода и отображает сумму словами. На данный момент невозможно использовать строки, массивы или функции, поэтому я разработал это со структурами переключателей, хотя это не очень эффективно.
Однако моя проблема возникает, когда я преобразовал ввод из числа с плавающей запятой в целое число и пытаюсь выделить цифры после десятичной точки, используя модуль; по какой-то причине он не возвращает правильную цифру.
Итак, скажем, для 321,78, извлекающего 1-й десятичный знак (или 8), он возвращает 7. Я не слишком уверен, почему это происходит и как это исправить.
Вот мой код для первой части
float number;
int digit1, digit2, digit3, decimals, decimal1, decimal2, int_number;
cout << "Enter a dollar amount from 0-1000: ";
cin >> number;
int_number = number * 100;
digit1 = (int_number % 1000)/100; //ones
digit2 = (int_number % 10000)/1000; //tens
digit3 = (int_number % 100000)/10000; // hundreds
decimal1 = int_number % 10;
decimal2 = (int_number % 100)/10;
Decimal1 должен возвращать 8, если введено значение 321,78. Я что-то пропустил? Любая помощь будет оценена по достоинству.
int_number
. - person Mats Petersson   schedule 18.04.2013double
, чемfloat
- person syam   schedule 18.04.2013321.78
, но в качествеint
значения32178
, я рекомендую не использоватьfloat
, чтобы добраться туда. На самом деле вы хотите прочитать его как строку, проанализировать ее, чтобы удалить.
и проверить на наличие ошибок формата, а затем преобразовать строку32178
вint
. Принятиеfloat
в качестве входных данных в основном говорит пользователю, что он должен ввести представляемое значение с плавающей запятой. - person Joseph Mansfield   schedule 18.04.2013