iOS大整数NSNumberFormatter无法正常工作

时间:2016-11-15 06:03:52

标签: ios objective-c number-formatting biginteger

我在iOS项目中使用大整数。我没有任何转换问题,因为我将所有数字保存在字符串中。但是当我在字符串中应用NSNumberFormatter时,我遇到了问题。假设我有40+位的字符串。 我的代码就像:

 // lastString_Capital is my string of all digit. let it 55252585858585858552525251232581285224 (38+)
 NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
 [numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle];
 [numberFormatter setMaximumFractionDigits:2];
 NSString *text = [numberFormatter stringFromNumber:[NSNumber numberWithUnsignedLongLong:[lastString_Capital longLongValue]]];

我知道范围(numberWithUnsignedLongLong)超出了我当前数字的限制。我需要一个解决方案来合成这个长号码。

提前致谢。

1 个答案:

答案 0 :(得分:1)

使用NSDecimalNumber。您的价值对于long long值来说太大了。

NSDecimalNumber *bigNum = [NSDecimalNumber decimalNumberWithString:lastString_Capital];
NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle];
[numberFormatter setMaximumFractionDigits:2];
NSString *text = [numberFormatter stringFromNumber:bigNum];