Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.95/65: Рейтинг темы: голосов - 65, средняя оценка - 4.95
0 / 0 / 0
Регистрация: 24.12.2016
Сообщений: 10

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

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

Студворк — интернет-сервис помощи студентам
Как обрабатывать переменную в которой хранится число вида 0.000000000000000000000000000001 (30 знаков)
Нужно запретить ее сокращать. Желательно если функция будет подходить для цикличной обработки множества чисел.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.12.2016, 04:18
Ответы с готовыми решениями:

Программа для вычисления суммы двух неотрицательных чисел. Ошибка: неправильный формат вывода.
Написал супер элементарную программу для вычисления суммы двух неотрицательных чисел. #include <stdio.h> int main() { int...

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

Формат вывода double
Всем привет! В своей программе вывожу переменные типа double следующим образом: std::cerr << std::setprecision(12) << val; ...

26
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
24.12.2016, 04:34
Цитата Сообщение от C101Nine Посмотреть сообщение
Как обрабатывать переменную в которой хранится число вида 0.000000000000000000000000000001 (30 знаков)
Нужно запретить ее сокращать. Желательно если функция будет подходить для цикличной обработки множества чисел.
А сколько ненулевых цифр должно быть в такой переменной? И что должна делать функция?
0
76 / 73 / 67
Регистрация: 18.09.2015
Сообщений: 234
24.12.2016, 20:19
C++
1
2
3
4
5
6
7
8
#include <iostream>
using namespace std;
 
int main()
{
    double x = 0.00000000000000000000000000000000000000000000000000000000000000000000000000001;
    cout << x << endl;
}
так сойдет?
0
0 / 0 / 0
Регистрация: 24.12.2016
Сообщений: 10
25.12.2016, 01:45  [ТС]
Мне нужно, что бы при переводе в string переменные в которых большое количество нулей не сокращались, до 1 * 10^-e , а передавались в исходном виде. Так как иначе, кодируется не исходное число, а его замена. Что дает совершенно иной хеш.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <iostream>
#include <sstream>
#include <fstream>
#include <cstdlib>
#include <cstdio>
#include <string>
#include <cmath>
#include "sha224.h"
 
 
using std::string;
using std::cout;
using std::endl;
 
int main(int argc, char *argv[])
{
    double VarZed;
    for (VarZed = 0.000000000000000000000000000001; VarZed < 0.999999999999999999999999999999; VarZed = VarZed + 0.000000000000000000000000000001)
    {
    float modf(float num, float *i);
    std::ostringstream strs;
    strs << VarZed;
    std::string input = strs.str();
    string output1 = sha224(input);     
    cout << endl << input << " :" << endl << output1 << endl;
    system("PAUSE");
    }
    return 0;
}
0
76 / 73 / 67
Регистрация: 18.09.2015
Сообщений: 234
25.12.2016, 02:54
а почему бы сразу не записать это число в строку?
0
0 / 0 / 0
Регистрация: 24.12.2016
Сообщений: 10
27.12.2016, 15:22  [ТС]
В смысле сразу записать?
Имеешь ввиду так?
C++
1
2
3
4
5
6
7
string s[0] = "0.000000000000000000000000000001";
string s[1] = "0.000000000000000000000000000002";
string s[2] = "0.000000000000000000000000000003";
// ....
// ....
// ....
string s[999999999999999999999999999998] = "0.999999999999999999999999999999";
Мне нужен именно цикл, с записью огромного множества чисел.
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
27.12.2016, 16:15
Цитата Сообщение от C101Nine Посмотреть сообщение
Мне нужен именно цикл, с записью огромного множества чисел.
Цикл от какого до какого числа?

Добавлено через 25 секунд
От 0.000000000000000000000000000001 до 0.999999999999999999999999999999?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include <iostream>
#include <string>
 
std::string Encrypt(const std::string &s)
{
    // ...
    return s;
}
 
template <size_t N>
std::string IntArrToStr(const int (&arr)[N])
{
    std::string res = "0.";
    for (const auto x : arr)
        res += x + '0';
    return res;
}
 
int main()
{
    const int N = 30; // количество знаков после запятой
    int arr[N] = {};
    arr[N-1]++;
    // перебор всех комбинаций
    do
    {
        // преобразовываем массив в строку, шифруем её и выводим результат
        std::cout << Encrypt(IntArrToStr(arr)) << std::endl;
        arr[N - 1]++;
        for (int j = N - 1; j >= 1; j--)
            if (arr[j] == 10)
            {
                arr[j - 1]++;
                arr[j] = 0;
            }
    } while (arr[0] != 10);
}
0
0 / 0 / 0
Регистрация: 24.12.2016
Сообщений: 10
29.12.2016, 23:29  [ТС]
Да, этот диапазон чисел.
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
30.12.2016, 00:52
Попробуйте
C++
1
2
char s[100];
sprintf(s, "%.*f", N, VarZed);
Но нет уверенности, что тип double будет различать такие числа.

Добавлено через 5 минут
В крайнем случае можно представить результат (VarZed) как 2 или 3 double с соответствующим масштабированием, сделать маленькую длинную арифметику....
Или даже как масcив long-ов (опять же с длинной арифметикой)
Но сколько же времени такой цикл будет считать?!
0
0 / 0 / 0
Регистрация: 24.12.2016
Сообщений: 10
03.03.2017, 15:29  [ТС]
Как задать точное количество чисел после запятой, что бы их не сокращало, а выводило в исходном виде.
С 30 знаками после запятой.
Число вида 0.000000000000000000000000000001
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
03.03.2017, 20:08
C++
1
2
3
printf("%.30f", x);
  // или
cout << precession(30) << x;
0
Любитель чаепитий
 Аватар для GbaLog-
3745 / 1801 / 566
Регистрация: 24.08.2014
Сообщений: 6,020
Записей в блоге: 1
03.03.2017, 20:18
Цитата Сообщение от Байт Посмотреть сообщение
C++
1
cout << precession(30) << x;
Прошу прощенья, но, я думаю, имелось ввиду: std::setprecision(30).
1
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
03.03.2017, 21:18
Цитата Сообщение от GbaLog- Посмотреть сообщение
я думаю, имелось ввиду: std::setprecision(30).
Да, наверное. Я просто редко пользуюсь cout, форматный ввод значительно компактнее делается на printf...Впрочем, эти вещи несложно загуглить и получить более точное документальное описание. Мой пост был типа "в какую сторону смотреть". Но вы правы. Эти вещи необходимо уточнять. Мы имеем дело с зелеными птенцами, которые смотрят нам в рот. Поскольку не только летать не умеют, но даже и не пытаются. Они думают, что если мы им в клювы червяков накидаем, то и слава Богу
0
0 / 0 / 0
Регистрация: 24.12.2016
Сообщений: 10
03.03.2017, 22:28  [ТС]
Это слегка обидно звучало, я просто не смог найти этого в своих учебниках, сейчас я изучаю блокчейны.
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
03.03.2017, 22:57
Цитата Сообщение от C101Nine Посмотреть сообщение
Это слегка обидно звучало
Я не хотел вас обидеть. Мой ехидный пост - это крик души, обращенный ко всему мирозданию. И если вы из тех птенцов, которые пытаются встать на крыло - Бог вам в помощь! И мы с удовольствие вам поможем.
1
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
04.03.2017, 01:30
Цитата Сообщение от Байт Посмотреть сообщение
Я не хотел вас обидеть.
И я. Стесняюсь спросить, где живут числа с 30 значащими?
0
0 / 0 / 0
Регистрация: 24.12.2016
Сообщений: 10
04.03.2017, 17:56  [ТС]
Это просто используемая переменная в программе, которую мне нужно расшифровать. Кодировка дана, диапазон чисел указан, осталось лишь обойти дырку в формате вывода, что бы string == double (с кодировкой), в малых значениях.
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
04.03.2017, 18:00
Цитата Сообщение от C101Nine Посмотреть сообщение
Это просто используемая переменная в программе, которую мне нужно расшифровать.
Конечно. Всё бывает. Просто я не понимаю и всё.
0
Эксперт С++
1675 / 1047 / 174
Регистрация: 27.09.2009
Сообщений: 1,945
04.03.2017, 18:50
Цитата Сообщение от IGPIGP Посмотреть сообщение
Стесняюсь спросить, где живут числа с 30 значащими?
В приведённом ТС примере не значащих цифр не 30, а всего одна. Влезет даже во float, хотя и не без огрехов, конечно.
1
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
04.03.2017, 19:24
Цитата Сообщение от Nick Alte Посмотреть сообщение
В приведённом ТС примере не значащих цифр не 30, а всего одна. Влезет даже во float, хотя и не без огрехов, конечно.
Напишите что вы имеете ввиду. И посмотрите что имеет ввиду ТС. 30 цифровых символов плюс точка. Спарсить и упаковать в строку это не вопрос, но стандартных средств я не знаю. Может они и есть, а я не знаю, вернее. Поэтому я и спрашиваю. Хотя конечно, всё зависит от компилятора и OS. Можно представить ситуацию, когда double имеет 30 значащих. Вполне.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.03.2017, 19:24
Помогаю со студенческими работами здесь

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

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

Не правильный формат вывода =(
Не одно, так другое.....в общем, у меня раньше был не Set *set. А vector&lt;SetElement&gt; и когда я писал строки типа Set set1,set2;...

Неправильный формат вывода
Bicycle Codes Den has two four-digit combination locks for protecting his bicycle from thieves. Every evening he arms the bicycle...

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru