Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.06.2011, 17:51   #1
Mirrok
 
Регистрация: 23.06.2011
Сообщений: 3
По умолчанию Перевести число в денежный формат

Помогите пожалуйста, не могу разобраться. Есть такая задача.
Составьте программу, которая преобразует введенное с клавиатуры дробное число в денежный формат. Например, число 12,348 должно быть преобразовано к виду 12 руб. 35 коп. Ниже представлен рекомендуемый вид диалога во время работы программы. Данные, вводимые пользователем, выделены жирным шрифтом.
Преобразование числа в денежный формат.
Введите дробное число – 23,6
23.6 руб. – это 23 руб. 60 коп.
В чем проблема.
Ввожу дробное число:
float a;
scanf("%f",&a);

Заведомо для пробы с 2-мя знаками после запятой
Вывожу само число
printf("%f руб. - это %d руб. %d коп.",a,int(a),int(a*100)%100);
То, что выдает программа:
Преобразование числа в денежный формат.
ВВедите дробное число - 23,63
23,629999 руб. - это 23 руб. 62 коп.

Это происходит не со всеми числами, например 23,6 преобразуется правильно. Как избавится от такого досадного искажения числа?
Mirrok вне форума Ответить с цитированием
Старый 23.06.2011, 18:00   #2
Mandrivnyk
Software Developer
Участник клуба
 
Аватар для Mandrivnyk
 
Регистрация: 01.03.2011
Сообщений: 1,098
По умолчанию

Использовать флаги.
Например,
Код:
printf ("%5.2f", a);
выводит число с плавающей точкой шириной в пять цифр, при этом из этих пяти две --после десятичной точки.
Болтовня ничего не стоит. Покажите мне код. (c) Linus Torvalds
Помог ответ? -- Поставьте отзыв.
Выражения особой благодарности в рублевом эквиваленте отправлять сюда --> R269634919062
Mandrivnyk вне форума Ответить с цитированием
Старый 23.06.2011, 18:12   #3
An1ka
C++,DirectX/OpenGL
Форумчанин
 
Регистрация: 09.01.2011
Сообщений: 422
По умолчанию

При переводе из вещественного в целое, использовать округление +0.005
Код:
printf("%5.2f руб. - это %d руб. %d коп.", a,int(a),int((a+0.005)*100)%100);
An1ka вне форума Ответить с цитированием
Старый 23.06.2011, 18:28   #4
Mirrok
 
Регистрация: 23.06.2011
Сообщений: 3
По умолчанию

Спасибо, разобрался
Mirrok вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как перевести число в строковый формат. в PHP Ast Помощь студентам 8 12.06.2011 08:52
Денежный формат a.tryanov Microsoft Office Access 7 21.09.2010 19:27
Преобразование дробного числа в денежный формат. Delphi LinMax Помощь студентам 2 11.06.2010 16:41
Перевести формат даты mar4elo Общие вопросы Delphi 1 08.05.2010 00:26
"Число в p-ичной системе счисления. Перевести число в q-ичную систему" и не только :) Zinder Паскаль, Turbo Pascal, PascalABC.NET 4 10.04.2010 14:20