Как сравнить двойное число с 30 десятичными разрядами с высокой точностью? - PullRequest
0 голосов
/ 11 июня 2019

мне нужно сравнить два больших десятичных числа с 30 десятичными разрядами.Мне нужно обнаружить разницу и по 30-му знаку после запятой, поэтому в моих потребностях это:

double number_1=80.004752165027610999459284357728;
double number_2=80.004752165027610999459284357727;

приводит к этому:

double result = 0.000000000000000000000000000001

Это кажется невозможным из-за самой природычисла (я пытался с помощью float, long double).У меня есть только ограниченный набор десятичных знаков для работы.Так в таком случае, как я могу добиться большей точности?Может быть, я могу использовать функцию какого-то фреймворка?Я не нашел ничего полезного в nsnumber и в Google

1 Ответ

1 голос
/ 11 июня 2019

Вы можете использовать NSDecimalNumber. Должно работать до 38 цифр.

NSDecimalNumber, неизменный подкласс NSNumber, обеспечивает объектно-ориентированная оболочка для выполнения арифметики base-10. Экземпляр может представляет любое число, которое может быть выражено как мантисса х 10 ^ экспонента где мантисса - десятичное целое число длиной до 38 цифр и показатель степени целое число от –128 до 127.

Документация

...