3

How could I handle operations with a number like: 48534588306961133067968196965257961415756656521818848750723547477673457670019632882524164647651492025728980571833579341743988603191694784406703

到目前为止,我没有尝试过任何工作...... unsigned long,long long 等......

4

3 回答 3

2

您需要的是一个库,它支持对任意长度的整数的操作。但是,据我所知,没有这样的库是用 Objective-C 编写的。

不过,您很幸运,因为 Objective-C 是 C 的超集。这使您可以使用 C 库,例如在这个有点过时的 SO question的答案中描述的那些库。

此外,由于 Clang 编译器支持 C++ 并结合了 Objective-C 和 C++ 代码,您可能可以使用类似big int的东西。

请注意,没有一个内置类型甚至接近于大到足以表示具有与您的示例一样多的数字的数字。最大的可用整数类型是unsigned long long,如果你不需要负数,它的大小是 8 字节/64 位,它给你一个范围0-18446744073709551615,或者最多 20 位数字。

于 2013-01-04T16:39:48.763 回答
2

您可以改用JKBigInteger,它是 LibTomMath C 库的 Objective-C 包装器。并且非常易于使用和理解。

在你的情况下:

JKBigInteger *int = [[JKBigInteger alloc] initWithString:@"48534588306961133067968196965257961415756656521818848750723547477673457670019632882524164647651492025728980571833579341743988603191694784406703"];
于 2015-08-17T01:14:22.227 回答
1

你可以在这里试试:http: //gmplib.org/

GMP 是用于任意精度算术的免费库,可对有符号整数、有理数和浮点数进行操作。除了运行 GMP 的机器中的可用内存所暗示的精度外,对精度没有实际限制。GMP具有丰富的功能集,并且功能具有规则的接口。

于 2013-01-04T16:34:06.587 回答