8 basamaklı bir sayının sonucunu, Objective-C'de programlı olarak 3 basamaklı bir sayının gücüne hesaplamakta sorun yaşıyorum.Objective-C'de gerçekten çok sayıda sayı nasıl bulunur?
örneğin bu sayıları ele alalım: 16468920^258
, 1862 digits in length olan bir takım yan etkiler gereken.
Ben safça çalıştı:
unsigned long long result = 1;
for (int i = 0; i < 258; i++)
result *= 16468920;
... ama result
çıkışları 0
.
long double result = powl(16468920, 258);
... ama result
çıkışları inf
.
finding out about NSDecimal sonra bu çalıştı:
NSDecimal result;
NSDecimal number = [[NSDecimalNumber decimalNumberWithString:@"16468920"] decimalValue];
NSDecimalPower(&result, &number, 258, NSRoundPlain);
... ama result
çıkışları NaN
, bu yüzden denedim:
NSDecimalNumber *number = [[NSDecimalNumber alloc] initWithInt:16468920];
NSDecimalNumber *result = [number decimalNumberByRaisingToPower:258];
... ama bu kod bir NSDecimalNumberOverflowException
yükseltir.
olarak gitmeliyim için yön Herhangi işaretçiler?
Burada sözü edilen kütüphanelerin birini kullanmak zorunda olacak - Allaha anlamına geleceğini düz ikili sayı olarak bu sayıyı saklamak için çünkü> http://en.wikipedia.org/wiki/Arbitrary-precision_arithmetic sadece bilir kaç tanesi bit – borrrden
Elinize geçtikten sonra bu numara ile neler yapabileceğinizi düşünmelisiniz. (Yaklaşık 5610 bit, BTW veya 701 bayt.) –