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

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

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

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

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

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

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

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

16
1172 / 833 / 359
Регистрация: 26.02.2015
Сообщений: 3,743
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
Don't worry, be happy
17779 / 10543 / 2035
Регистрация: 27.09.2012
Сообщений: 26,514
Записей в блоге: 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
Модератор
Эксперт по электронике
8756 / 6546 / 887
Регистрация: 14.02.2011
Сообщений: 22,962
13.10.2016, 14:28 7
Цитата Сообщение от DarkJoker1992 Посмотреть сообщение
есть необходимость работать с числами выше 100000000000
на сколько большими?
long long int от -9223372036854775808 до 9223372036854775807
unsigned long long int от 0 до 18446744073709551615
0
Don't worry, be happy
17779 / 10543 / 2035
Регистрация: 27.09.2012
Сообщений: 26,514
Записей в блоге: 1
13.10.2016, 14:45 8
Цитата Сообщение от ValeryS Посмотреть сообщение
на сколько большими?
Цитата Сообщение от DarkJoker1992 Посмотреть сообщение
как заставить прогу работать с числами больше секстильона?
т.е. больше чем 1036.
0
Диссидент
Эксперт C
27186 / 16943 / 3745
Регистрация: 24.12.2010
Сообщений: 38,125
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
Модератор
Эксперт по электронике
8756 / 6546 / 887
Регистрация: 14.02.2011
Сообщений: 22,962
13.10.2016, 15:22 10
Цитата Сообщение от Croessmah Посмотреть сообщение
т.е. больше чем 1036.
а если французский секстильон 1021
http://dic.academic.ru/dic.nsf... СЕКСТИЛЬОН

Добавлено через 2 минуты
Цитата Сообщение от Байт Посмотреть сообщение
Если человек столкнулся с такой проблемой, то все лонг-лонги - это паллиатив.
бывает, что человек и сам не знает, что ему надо
Цитата Сообщение от Байт Посмотреть сообщение
Надо переходить к длинной арифметике.
длинная арифметика это лишние нагрузки
0
Диссидент
Эксперт C
27186 / 16943 / 3745
Регистрация: 24.12.2010
Сообщений: 38,125
13.10.2016, 15:23 11
Цитата Сообщение от Байт Посмотреть сообщение
мне всегда казалось 1021
Вопрос не столь однозначен, как мне представлялось
Секстиллион (или секстильон) - это число, представляющее собой единицу с двадцатью одним нулем. Однако англичане идут своим путем - в английской математике это единица с 36-ю нулями.
Ну, что с них взять? Они до сих пор на фунты и ярды меряют...
0
Модератор
Эксперт по электронике
8756 / 6546 / 887
Регистрация: 14.02.2011
Сообщений: 22,962
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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.10.2016, 15:35
Помогаю со студенческими работами здесь

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

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

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

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


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

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

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