Biginteger c как подключить
Объясните пожалуйста, почему, когда набираю Ваши примеры в IDEA, то setScale и все аргументы в скобках: BigDecimal.ROUND_UP и все другие из лекции зачёрктнутые? Ошибок нет, на экран всё выводится, но в коде эти строки зачёркиваются и пишется ошибка, например: «ROUND_NP is deprecated». Это из-за того что setScale имеет параметры int int?
Руслан Уровень 22
3 августа 2022
Имеет смысл полностью отказаться от примитов в пользу BigInteger?)
Vlad Уровень 28
8 июня 2022
опечатка: » а есть такие, которые позволяю(пропущена т) задавать настройки создаваемого объекта (способы округления, количество знаков после запятой):»
Anastasia A. Уровень 24
29 апреля 2022
В ROUND_UP и ROUND_DOWN ошибки. Оно либо от нуля, либо к нулю, независимо от знака числа. Даже проверила в Idea
Серега Батенин Уровень 34
20 марта 2022
А мне вот интересно почему когда мы рассматривали конкретные пример округления BigDecimal с вариантами ROUND_UP ROUND_DOWN, то значение у отрицательных чисел были одни. А когда начали рассматривать ROUND_CEILING и ROUND_FLOOR, то в таком случае значения у отрицательных чисел почему то поменялись, хотя написано что к ним применяются вышеупомянутые методы UP и DOWN
Алексей Сивенков Уровень 16
12 января 2022
добрый день кто то может пояснить логику: BigInteger — который на вход принимает только строчные описания чисел ну вот как так то.
vzubkeviсh Уровень 26
28 января 2021
char[] arr = new String("455656.545").toCharArray(); BigDecimal fourthValue = new BigDecimal(arr, 2, 6); //5656.5
Задаем массив знаков, с которого элемента берём значения для объекта и сколько этих элементов берём. Берем же 6 элементов, почему в результате вышло 5?
Rufat Khafizov Уровень 23
6 января 2021
метод BigInteger probablePrime (int bitLength, Random rnd) Возвращает положительное значение BigInteger, которое, вероятно, является простым, с указанным значением bitLength. Вероятность того, что BigInteger, возвращаемый этим методом, является составным, не превышает 2 в степени -100 . (мануал) Так что это не совсем рандом, в полном смысле этого слова.
Иван Уровень 41
7 августа 2020
Возможно, я тупой, но примеры с созданием BigDecimal() с различными параметрами, передаваемыми в конструктор — абсолютно непонятные.
Подключение Библиотеки Bigint
мне выдает следующие ошибки:
1>bg1.obj : error LNK2001: unresolved external symbol «public: void __thiscall BigInteger::multiply(class BigInteger const &,class BigInteger const &)» (?multiply@BigInteger@@QAEXABV1@0@Z)
1>bg1.obj : error LNK2001: unresolved external symbol «public: void __thiscall BigInteger:perator=(class BigInteger const &)» (??4BigInteger@@QAEXABV0@@Z)
1>bg1.obj : error LNK2001: unresolved external symbol «public: __thiscall BigInteger::BigInteger(int)» (??0BigInteger@@QAE@H@Z)
1>bg1.obj : error LNK2001: unresolved external symbol «class std::basic_ostream > & __cdecl operator <<(class std::basic_ostream> &,class BigInteger const &)» (??6@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@AAV01@ABVBigInteger@@@Z)
1>C:\Users\MartinSeptim\Documents\С++\bg1\Release\bg1.exe : fatal error LNK1120: 4 unresolved externals
как решить эту проблему?
Biginteger c как подключить
Встроенные примитивные числовые типы не всегда могут подходить для определенных программ. Например, необходимо хранить и использовать в программе очень большие числа, которые выходят за пределы допустимых значений для типов long и double. В этом случае для работы с числовыми данными можно использовать два дополнительных типа из пакета java.math — BigInteger (для целочисленных данных) и BigDecimal (для чисел с плавающей точкой).
Основные методы класса BigInteger:
- BigInteger add(BigInteger other) : возвращает сумму двух чисел
- BigInteger subtract(BigInteger other) : возвращает разность двух чисел
- BigInteger multiply(BigInteger other) : возвращает произведение двух чисел
- BigInteger divide(BigInteger other) : возвращает частное двух чисел
- BigInteger mod(BigInteger other) : возвращает остаток от целочисленного деления двух чисел
- BigInteger sqrt() : возвращает квадратный корень числа
- int compareTo(BigInteger other) : сравнивает два числа. Возвращает -1, если текущий объект меньше числа other, 1 — если текущий объект больше и 0 — если числа равны
- static BigInteger valueOf(long x) : возвращает объект BigInteger, значение которого равно числу, переданному в качестве параметра
- int intValue() : конвертирует объект BigInteger в объект int
- byte byteValue() : преобразует объект BigInteger в byte
- short shortValue() : преобразует объект BigInteger в short
- long longValue() : преобразует объект BigInteger в long
Основные методы класса BigDecimal:
- BigDecimal add(BigDecimal other) : возвращает сумму двух чисел
- BigDecimal subtract(BigDecimal other) : возвращает разность двух чисел
- BigDecimal multiply(BigDecimal other) : возвращает произведение двух чисел
- BigDecimal divide(BigDecimal other) : возвращает частное двух чисел
- BigDecimal divide(BigDecimal other, RoundingMode mode) : результат деления двух чисел, округленное в соответствии с режимом mode
- int compareTo(BigDecimal other) : сравнивает два числа. Возвращает -1, если текущий объект меньше числа other, 1 — если текущий объект больше и 0 — если числа равны
- static BigDecimal valueOf(double x) : возвращает объект BigDecimal, значение которого равно числу, переданному в качестве параметра
- double doubleValue() : преобразует объект BigDecimal в double
- float floatValue() : преобразует объект BigDecimal в float
Пример использования классов BigInteger и BigDecimal:
import java.math.*; public class Program < public static void main(String[] args) < BigInteger a = BigInteger.valueOf(2147483647); BigInteger b = BigInteger.valueOf(2147483641); //a = a * b; // так нельзя a = a.multiply(b); System.out.println(a); // 4611686001247518727 long x = a.longValue(); System.out.println(x); // 4611686001247518727 BigDecimal c = BigDecimal.valueOf(2325.06); BigDecimal d = BigDecimal.valueOf(215.06); c = c.subtract(d.multiply(BigDecimal.valueOf(2.1))); System.out.println(c); // 1873.434 double y = c.doubleValue(); System.out.println(y); // 1873.434 >>
Стоит отметить, несмотря на то, что объекты BigInteger и BigDecimal представляют числа, мы не можем применять с ними стандартные арифметические операции. Все математические действия с данными объектами идут через их методы.
BigInteger в С++ или его аналог?
В последнее время программировать приходится имея дело с большими числами, так, что не хватает размеров типа. Как подключить бибилиотеку BigInteger в С++? Это по идее должно решить проблему. Или может есть какой-то аналог? Нужно решить задачу, где на вход подаются числа не превышающие 10^100 . Как вообще найти выход из положения?
Отслеживать
задан 17 июл 2018 в 19:27
508 1 1 золотой знак 5 5 серебряных знаков 22 22 бронзовых знака
GMP, boost::multiprecision, MAPM.
17 июл 2018 в 19:59
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
Классика жанра это GMP. Но есть и другие варианты.
Как-то мне тоже понадобилась длинная арифметика. Но использовать GMP было нельзя, так как длинная арифметика нужна была для микроконтроллеров без операционной системы и кучи. Пришлось написать свою библиотеку С++ шаблонов для работы с длинными целыми числами. Вот ссылка:
Там в архиве есть и описание на русском языке.
А память под переменные и промежуточные результаты выделялась по месту инициализации шаблона в виде массивов с вычисленным во время компиляции размером?
Да, все массивы хранятся статически в объектах класса и размер переменных определяется пользователем на этапе компиляции. То есть внутри этой библиотеки шаблонов обращений к куче нет. Соответственно, нет затрат времени на размещение объектов в куче.