Типы данных
Вывод действительных чисел на C++ Перед выводом действительных чисел (float, double, long double) следует указать выходному потоку точность вывода. Например:
float x; x = 123.456789; cout.setf(ios::fixed); // вывод в фиксированном формате cout.precision(6); // вывод до 6 знака после точки, включительно cout
Вы используете гостевой доступ (Вход)
Эта страница: General type: incourse. Context Страница: Вывод действительных чисел на C++ (context id 276028). Page type mod-page-view.
Как корректно вывести дробное число?
Здравствуйте! Реализую проект на Qt. Пытаюсь вывести дробь, знаменатель которой не является степенью двойки (19 знаков после запятой). Например, 1/5 = 0,2000000000000000111. Понятно, что такой вид — особенность представления чисел с плавающей точкой в C++. Но как вывести доступный для пользователя результат (1/5 = 0,2)? Формат вывода желательно не менять. Пользуюсь следующим методом для вывода числа.
QString MainWindow::numberFormat(const double &number)
Прошу вашей помощи, заранее благодарю.
Отслеживать
задан 14 янв 2017 в 5:48
Декстер Морган Декстер Морган
95 1 1 серебряный знак 8 8 бронзовых знаков
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
Ну прочтите документацию — вы же пытаетесь вывести 21 знак ( toString(number, ‘f’, 21) ). Зачем? Уберите точность вывода до реальной. Думаю, предлагаемых по умолчанию 6 знаков, как говорится, за глаза хватит. А то и меньше.
Отслеживать
ответ дан 14 янв 2017 в 5:54
222k 15 15 золотых знаков 120 120 серебряных знаков 234 234 бронзовых знака
понятно, что 21 знак. У меня калькулятор, мне нужно вывести именно в таком формате.
14 янв 2017 в 6:07
В таком случае берите библиотеку для вычисления с точностью в 40 знаков, и отрезайте 21. Не окажитесь только в этой ситуации.
14 янв 2017 в 6:44
@Harry, ну, вы же эксперт — вы же все можете! 🙂
8 дек 2020 в 15:26
Я в своё время нашёл только один удобный выход из этой ситуации. Нужно реализовать собственный алгоритм деления числителя на знаменатель «уголком», как в школе, выводя одну десятичную цифру результата за другой. Получив строку нужной длины из цифр после запятой, удаляем нули на конце.
Код такой функции предельно прост (псевдокод, из головы):
void div (unsigned int num, unsigned int denom, size_t n) < printf ("%u,", num/denom); // Целая часть num %= denom; // Дробная часть. while (n-- >0) < // n - сколько нужно цифр. num *= 10; unsigned int d = num/denom; printf ("%u", d); num -= d*denom; >>
Разумеется, вместо printf вам нужно что-то другое, например, сохранение цифр в строку или что вы там собираетесь делать, я не знаю.
Как вывести дробное число
Я хочу вывести 2 или 3 знака после запятой. ЧТО МНЕ НАДО написатаь. Подскажите, пожалуйста.
т. е. к примеру число: 0,3335698877, а мне надо вывести 0,334.
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Как правильно вывести дробное число
Драсте! Формат вывода числа написал правильно (тип float значит нужно писать %f), а оно постоянно.
Как получить дробное число при вычислении
Я в принципе знаю ответ, но помощь не помешает. Мне например нужно записать c=1/7. Почему надо в.
Printf выводит дробное число как целое
Здравствуйте. WinXP, MS VS2005 В приведенном коде не могу вывести число дробным. В чем.
633 / 376 / 7
Регистрация: 25.05.2010
Сообщений: 1,372
52 / 52 / 10
Регистрация: 25.05.2010
Сообщений: 182
man printf ?
Регистрация: 16.11.2009
Сообщений: 207
float a; printf("%.3f",a=2/3); // по моему вот так
633 / 376 / 7
Регистрация: 25.05.2010
Сообщений: 1,372
printf(«\n %5.3f»,a); // по моему так
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь
Преобразовать введенное с клавиатуры дробное число в денежный формат
Написать программу, которая преобразует введенное с клавиатуры дробное число в денежный формат.
Преобразование текстового файла в бинарный: дробное число неправильно переводится
Здравствуйте. Мой текстовый файл состоит из строк последнее слово которых — дробное число. При.
Как вывести дробное число. Delphi+Assembler
Здравствуйте. Как вывести дробное число с фиксированной точкой в Delphi FloatToStr, если это слово.
Вывести сумму элементов матрицы как дробное число
Помпогите! Ответ выводиться целым а нужно десятичным! case 3: for( int.
Как вывести дробное число в обычном виде с фиксированной запятой?
Как вывести дробное число в обычном виде с фиксированной запятой?
Нужно вывести дробное число в нужном формате
то есть допустим есть число 3.232312212 и мне нужно вывести 3.23 причем если цифра после тройки >=.
Или воспользуйтесь поиском по форуму:
printf в C/C++: простыми словами
Привет! Здесь мы поговорим о функции printf . Эта функция доступна как в C, так и в C++, но влияние этой функции не ограничено этими двумя языками. Похожие функции вы сможете найти в Go, python, F#, и других.
Начнем мы с рассмотрения простых примеров использования printf , чтобы получить представление о том, как она работает. Потом мы посмотрим на разнообразие модификаторов, которые делают эту функцию настолько полезной и универсальной.
Как вывести строку на экран используя printf
Функция printf имеет следующий вид:
int printf ( const char * format, ... );
- Первым аргументом она принимает указатель на строку, которая говорит этой функции, что и как нужно вывести на экран.
- Далее функция принимает сколько угодно дополнительных параметров. Они будут исполь