Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
C101Nine
0 / 0 / 0
Регистрация: 24.12.2016
Сообщений: 10
1

Формат вывода чисел

24.12.2016, 04:18. Просмотров 1402. Ответов 26
Метки нет (Все метки)

Как обрабатывать переменную в которой хранится число вида 0.000000000000000000000000000001 (30 знаков)
Нужно запретить ее сокращать. Желательно если функция будет подходить для цикличной обработки множества чисел.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.12.2016, 04:18
Ответы с готовыми решениями:

Программа для вычисления суммы двух неотрицательных чисел. Ошибка: неправильный формат вывода.
Написал супер элементарную программу для вычисления суммы двух неотрицательных...

Формат вывода
Здравствуйте, уважаемые форумчане! Помогите, пожалуйста, исправить вывод, чтобы...

Формат вывода числа
Помогите пожалуйста решить проблему. Мне нужно вывести на экран объем жесткого...

Формат вывода double
Всем привет! В своей программе вывожу переменные типа double следующим...

Неправильный формат вывода
Bicycle Codes Den has two four-digit combination locks for protecting his...

26
avgoor
1041 / 609 / 157
Регистрация: 05.12.2015
Сообщений: 1,732
04.03.2017, 19:30 21
Цитата Сообщение от IGPIGP Посмотреть сообщение
но стандартных средств я не знаю. Может они и есть, а я не знаю, вернее. Поэтому я и спрашиваю
C++
1
2
    float f = 1e-30;
    std::cout << std::setprecision(30) << std::fixed << f;
Не?
1
Nick Alte
Эксперт С++
1647 / 1019 / 174
Регистрация: 27.09.2009
Сообщений: 1,945
Завершенные тесты: 1
04.03.2017, 19:44 22
Цитата Сообщение от IGPIGP Посмотреть сообщение
Напишите что вы имеете ввиду.
Число, представленное ТС в качестве примера, имеет 1 десятичную цифру в мантиссе. Ведущие нули - не в счёт. Это легко видеть, записав его в экспоненциальной форме: 1*10^-30. В такой приблизительно форме, только в двоичной системе счисления, оно и записывается в форматах с плавающей точкой. Отдельно мантисса, отдельно экспонента.

Не зная ситуации ТС, не могу исключить как невозможный или даже маловероятный такой вариант, когда ему надо печатать числа с большим количеством ведущих нулей и разумным количеством значащих цифр (напомню - 7 для float, 15 для double).
1
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
7057 / 3359 / 455
Регистрация: 04.12.2011
Сообщений: 9,345
Записей в блоге: 5
04.03.2017, 21:24 23
Цитата Сообщение от avgoor Посмотреть сообщение
Не?
Я прошу прощения.
C++
1
2
cout.precision(30);
cout.fixed;
А подключить iomanip и попробовать не догадался.
0
C101Nine
0 / 0 / 0
Регистрация: 24.12.2016
Сообщений: 10
05.03.2017, 10:57  [ТС] 24
В языке Jass было понятие подстроки - когда у строки некоторое количество символов с начало и/или конца не учитывалось, а остаток записывался в переменную, возможно ли что то подобное на c++ но только с числами?

Всегда остается вариант создать 30 переменных и записывать их преобразованные значения в строку, после чего суммировать в одну строку
Таким образом число вида 0.000000000000000000000000000001 разделялось бы на такие
String A = 0.
Double A1 = 0
Double A2 = 0
.....
Double A30 =0

Далее пишем циклическую функцию с if
Прибавляем к A30 единицу, если A30 == 9 то, сбросить значение до 0, но A29++
И так далее..
После каждого прибавления единицы, переводить все в string и записывать последовательно в одну строку, но это тот вариант, которого хотелось бы избежать.
0
Nick Alte
Эксперт С++
1647 / 1019 / 174
Регистрация: 27.09.2009
Сообщений: 1,945
Завершенные тесты: 1
05.03.2017, 12:41 25
Можно проще:
C++
1
2
3
4
5
6
7
#include <iostream>
#include <string>
 
int main()
{
   std::cout << std::stof("0.000000000000000000000000000001") << "\n";
}
, то есть, понимает такую запись сразу из коробки.
0
C101Nine
0 / 0 / 0
Регистрация: 24.12.2016
Сообщений: 10
06.03.2017, 14:16  [ТС] 26
Nick Alte, не понял что ты хочешь этим показать, ведь мне нужно что бы число передавалось в исходном, а не сокращенном виде 1е-30, иначе при переводе в строку будет переведена именно сокращенная запись, что даст совершено другое значение при кодировке.
0
sourcerer
Модератор
Эксперт CЭксперт С++
4863 / 2044 / 325
Регистрация: 20.02.2013
Сообщений: 5,545
Записей в блоге: 24
Завершенные тесты: 1
06.03.2017, 17:49 27
Цитата Сообщение от Nick Alte Посмотреть сообщение
разумным количеством значащих цифр (напомню - 7 для float, 15 для double)
C101Nine, если надо больше, можно использовать Boost.Multiprecision.
0
06.03.2017, 17:49
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.03.2017, 17:49

Неверный формат вывода
Здравствуйте! Язык С++ только осваиваю, но уже возникло тупиковое...

Не правильный формат вывода =(
Не одно, так другое.....в общем, у меня раньше был не Set *set. А...

Неправильный формат вывода массива С++
Добрый день. Пишу программу, которая реализует стек на основе статического...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
27
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru