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

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

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

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

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

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

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

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

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

26
avgoor
1007 / 601 / 156
Регистрация: 05.12.2015
Сообщений: 1,686
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
Эксперт С++
1646 / 1018 / 174
Регистрация: 27.09.2009
Сообщений: 1,945
Завершенные тесты: 1
04.03.2017, 19:44 #22
Цитата Сообщение от IGPIGP Посмотреть сообщение
Напишите что вы имеете ввиду.
Число, представленное ТС в качестве примера, имеет 1 десятичную цифру в мантиссе. Ведущие нули - не в счёт. Это легко видеть, записав его в экспоненциальной форме: 1*10^-30. В такой приблизительно форме, только в двоичной системе счисления, оно и записывается в форматах с плавающей точкой. Отдельно мантисса, отдельно экспонента.

Не зная ситуации ТС, не могу исключить как невозможный или даже маловероятный такой вариант, когда ему надо печатать числа с большим количеством ведущих нулей и разумным количеством значащих цифр (напомню - 7 для float, 15 для double).
1
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
7004 / 3297 / 448
Регистрация: 04.12.2011
Сообщений: 9,124
Записей в блоге: 5
04.03.2017, 21:24 #23
Цитата Сообщение от avgoor Посмотреть сообщение
Не?
Я прошу прощения.
C++
1
2
cout.precision(30);
cout.fixed;
А подключить iomanip и попробовать не догадался.
0
C101Nine
0 / 0 / 1
Регистрация: 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
Эксперт С++
1646 / 1018 / 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 / 1
Регистрация: 24.12.2016
Сообщений: 10
06.03.2017, 14:16  [ТС] #26
Nick Alte, не понял что ты хочешь этим показать, ведь мне нужно что бы число передавалось в исходном, а не сокращенном виде 1е-30, иначе при переводе в строку будет переведена именно сокращенная запись, что даст совершено другое значение при кодировке.
0
gru74ik
Модератор
Эксперт CЭксперт С++
4648 / 1962 / 293
Регистрация: 20.02.2013
Сообщений: 5,225
Записей в блоге: 23
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. А...

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

Формат вывода формул на экран
Мне нужно вывести математическую формулу на экран. С помощью каких средств...

Serial.print() - формат вывода
В библиотеке Ардуино есть такой код. Что такое - DEC и -&gt;? Логический сдвиг?...


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

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

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