148 / 4 / 0
Регистрация: 19.02.2013
Сообщений: 369
1

Способы работы с очень большими числами

13.10.2016, 13:43. Показов 31772. Ответов 16
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, есть необходимость работать с числами выше 100000000000 но Visual Studio уже начинает выкабеливаться и выдавать данные "в минус"
как заставить прогу работать с числами больше секстильона? может можно какую то библиотеку подключить?(мне не нужно выводить результат, мне нужно что бы он с ним сделал арифметические операции и записал результат в тхт но желательно без степени, что бы выглядело как обычное число.)
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.10.2016, 13:43
Ответы с готовыми решениями:

Как реализовать работу с очень большими числами?
Добрый день всем! Очень необходимы светлые мозги, ибо не могу понять в чем проблема. Есть...

Класс для работы с большими числами
Здравствуйте, кто-нибудь уже писал класс для работы с очень большими числами, с поддержкой...

Порекомендуйте библиотеку для работы с большими числами
Добрый день. Нужна библиотека для работы с большими числами, в которой определены следующие...

Есть ли библиотеки для работы с большими числами
Доброй ночи! Какие вы могли бы порекомендовать библиотеки для работы с большими числами в языке...

16
1352 / 851 / 365
Регистрация: 26.02.2015
Сообщений: 3,799
13.10.2016, 14:01 2
Длинная арифметика посмотрите в интернете.
0
148 / 4 / 0
Регистрация: 19.02.2013
Сообщений: 369
13.10.2016, 14:04  [ТС] 3
использовал __int64 al = 1000000000000000000;
с большим числом можно работать?

Добавлено через 1 минуту
ок спасибо, сейчас погуглю
0
Неэпический
17869 / 10634 / 2054
Регистрация: 27.09.2012
Сообщений: 26,736
Записей в блоге: 1
13.10.2016, 14:15 4
Лучший ответ Сообщение было отмечено DarkJoker1992 как решение

Решение

http://www.boost.org/doc/libs/... index.html
C++
1
2
3
4
5
6
7
8
9
10
11
12
//g++  4.9.3
 
#include <iostream>
#include <boost/multiprecision/cpp_int.hpp>
 
int main()
{
    namespace mp = boost::multiprecision;
    mp::cpp_int num1 ("12347893489239423480238407238947892349823");
    mp::cpp_int num2 ("487658923425734580234503495059345034250349534059234");
    std::cout << num1 * num2 << std::endl;
}
http://rextester.com/RGFW50375
7
148 / 4 / 0
Регистрация: 19.02.2013
Сообщений: 369
13.10.2016, 14:18  [ТС] 5
Я прям незнаю, но я бы вас расцеловал! СПАСИБО ОГРОМНЕЙШЕЕ!
0
Croessmah
13.10.2016, 14:21
  #6

Не по теме:

Цитата Сообщение от DarkJoker1992 Посмотреть сообщение
Я прям незнаю, но я бы вас расцеловал!
Не надо, Леонид Ильич. :D

0
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,511
13.10.2016, 14:28 7
Цитата Сообщение от DarkJoker1992 Посмотреть сообщение
есть необходимость работать с числами выше 100000000000
на сколько большими?
long long int от -9223372036854775808 до 9223372036854775807
unsigned long long int от 0 до 18446744073709551615
0
Неэпический
17869 / 10634 / 2054
Регистрация: 27.09.2012
Сообщений: 26,736
Записей в блоге: 1
13.10.2016, 14:45 8
Цитата Сообщение от ValeryS Посмотреть сообщение
на сколько большими?
Цитата Сообщение от DarkJoker1992 Посмотреть сообщение
как заставить прогу работать с числами больше секстильона?
т.е. больше чем 1036.
0
Диссидент
Эксперт C
27706 / 17322 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
13.10.2016, 15:18 9
http://lmgtfy.com/?q=%D1%81%D0... 0%BE%D0%BD
Цитата Сообщение от Croessmah Посмотреть сообщение
т.е. больше чем 1036.
мне всегда казалось 1021
Цитата Сообщение от ValeryS Посмотреть сообщение
unsigned long long
Если человек столкнулся с такой проблемой, то все лонг-лонги - это паллиатив. Надо переходить к длинной арифметике.
Есть такое утверждение - "В программирование есть только 3 числа - Ноль, Один и Бесконечность". Вот тут что-то похожее.
1
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,511
13.10.2016, 15:22 10
Цитата Сообщение от Croessmah Посмотреть сообщение
т.е. больше чем 1036.
а если французский секстильон 1021
http://dic.academic.ru/dic.nsf... СЕКСТИЛЬОН

Добавлено через 2 минуты
Цитата Сообщение от Байт Посмотреть сообщение
Если человек столкнулся с такой проблемой, то все лонг-лонги - это паллиатив.
бывает, что человек и сам не знает, что ему надо
Цитата Сообщение от Байт Посмотреть сообщение
Надо переходить к длинной арифметике.
длинная арифметика это лишние нагрузки
0
Диссидент
Эксперт C
27706 / 17322 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
13.10.2016, 15:23 11
Цитата Сообщение от Байт Посмотреть сообщение
мне всегда казалось 1021
Вопрос не столь однозначен, как мне представлялось
Секстиллион (или секстильон) - это число, представляющее собой единицу с двадцатью одним нулем. Однако англичане идут своим путем - в английской математике это единица с 36-ю нулями.
Ну, что с них взять? Они до сих пор на фунты и ярды меряют...
0
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,511
13.10.2016, 15:23 12
Цитата Сообщение от DarkJoker1992 Посмотреть сообщение
100000000000
Цитата Сообщение от DarkJoker1992 Посмотреть сообщение
секстильона
вот он, разбросик
0
Байт
13.10.2016, 15:26
  #13

Не по теме:

Цитата Сообщение от ValeryS Посмотреть сообщение
бывает, что человек и сам не знает, что ему надо
Эт-т-то точно! А ты знаешь? В себе я не уверен...:D

0
ValeryS
13.10.2016, 15:28
  #14

Не по теме:

Цитата Сообщение от Байт Посмотреть сообщение
А ты знаешь? В себе я не уверен...
конечно нет:) сколько раз было, меняешь входные условия, и решение на порядок легче

0
Croessmah
13.10.2016, 15:31
  #15

Не по теме:

Байт, чё-т я перепутал.

0
GbaLog-
13.10.2016, 19:20
  #16

Не по теме:

Цитата Сообщение от Croessmah Посмотреть сообщение
http://rextester.com/RGFW50375
Не знал, что в rextester'e прикручен boost. =-O

0
148 / 4 / 0
Регистрация: 19.02.2013
Сообщений: 369
16.10.2016, 15:35  [ТС] 17
Для работы с float, подсказал hoggy, за что ему Огромное Спасибо!
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
#include <iostream>
#include <boost/multiprecision/cpp_dec_float.hpp>
 
 
int main()
{
    std::cout << "Hello, world!\n";
    
    namespace mp = boost::multiprecision;
    mp::cpp_dec_float_100 num1 ("24444444488888888484848484848484848484848484848484848484848484848484444422222288888882");
    mp::cpp_dec_float_100 num2 ("10000000000000000000000000000000000000000000000000000000000000000000000000000000000");
    
    mp::cpp_dec_float_100 num3 = num1 / num2;
    mp::cpp_dec_float_100 num4 = num3 * num2;
    mp::cpp_dec_float_100 num5 = num1 - num4;
    
    std::cout << std::setprecision(std::numeric_limits<mp::cpp_dec_float_100>::max_digits10);
    
    std::cout << "num1 = " << num1 << std::endl;
    std::cout << "num2 = " << num2 << std::endl;
    
    std::cout << "num3 = num1 / num2 = " << num3 << std::endl;
    std::cout << "num4 = num3 * num2 = " << num4 << std::endl;
    std::cout << "num5 = num1 - num4 = " << num5 << std::endl;
    
    
    if(num5 == 0)
        std::cout <<"all rigth!\n";
    else
        std::cout <<"error: num5 = " << num5 << '\n';
}
hoggy на форуме
0
16.10.2016, 15:35
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.10.2016, 15:35
Помогаю со студенческими работами здесь

Простой калькулятор для работы с большими числами
Помогите плеас) Задали сделать простенький калькулятор-сделал. Сказали, что нужно для работы с...

Библиотека для работы с большими числами, возможность факторизации
Привет всем! Какие библиотеки можете посоветовать для работы с большими числами, с возможностью...

Какой тип данных использовать для работы с большими числами?
Здравствуйте! Какой тип данных можно использовать для больших чисел( unsigned long long не...

Библиотеки для работы с очень большими дробными числами
Добрый день, появилась необходимость оперировать дробными (равномерно распределенными) числами. К...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru