Действительно большие числа - PullRequest
2 голосов
/ 31 июля 2011

Я пишу приложение для iPhone. Скажем, у меня есть целое число LENGTH 256, то есть 94736 имеет длину 5, 3745, имеет длину 4 и т. Д. Какой тип данных может соответствовать числу длиной 256?

Ответы [ 6 ]

2 голосов
/ 31 июля 2011

Это должен быть номер? Будете ли вы делать математические операции с ним? Если нет, вы должны просто использовать NSString.

1 голос
/ 31 июля 2011

Я думаю, вы можете использовать удвоение, но ограничиваясь доступной точностью. Или, может быть, вы можете сохранить его в виде строки и написать свои собственные функции для манипулирования ими, такие как плюс, минус. Это может быть сложно.

1 голос
/ 31 июля 2011

Максимальное значение для NSInteger составляет NSIntegerMax, которое в iphone составляет 32 бита.(2.147.483.647)

Но число на 256 шифрах следует рассматривать как NSString .

(из Справочник основных констант )

0 голосов
/ 13 октября 2011

Для школьного проекта я работал с числами длиной 256+. Я нашел способ создать класс для хранения чисел в виде массивов.

Например, я бы сохранил 345 как [3,4,5]. Таким образом, вы ограничены только объемом доступной памяти.

Я написал методы умножения, сложения и вычитания положительных чисел. Не слишком сложно, и это хорошо работает.

Я бы предложил то же самое, если вы смотрите на математику с числами. Затем просто реализуйте нужные вам функции.

Это было сделано в c ++ с использованием xcode в качестве компилятора.

0 голосов
/ 31 июля 2011

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

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

Если вам действительно нужны числа такого размера с идеальной точностью, загляните в библиотеку GNU MP Bignum по адресу http://gmplib.org/. Предел для чисел, которые может поддерживать GNU MP, ограничен только доступной оперативной памятью. Он написан на C, так что его легко использовать как есть для приложения iPhone.

0 голосов
/ 31 июля 2011

Максимальное число составляет 10 ^ 256 - 1 (от 10 до 256 минус 1)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...