【问题标题】:iOS big integer NSNumberFormatter not workingiOS大整数NSNumberFormatter不起作用
【发布时间】:2016-11-15 06:03:51
【问题描述】:

我在我的 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) 超出了我当前数字的限制。我需要一个解决方案来形成这个长数字。

提前致谢。

【问题讨论】:

    标签: ios objective-c number-formatting biginteger


    【解决方案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];
    

    【讨论】:

    • 请帮助我获取 55252585858585858552525251232581285224(38 位)这个号码。如果我用这个输入更多数字,它最后会添加全零。可能是我需要更多的大数字格式。
    • NSDecimalNumber 最多只支持 38 位精度,这是您能够格式化的最佳值。 Apple 提供的任何 Cocoa API 都无法让您获得比这更高的精度。
    • 是的。我也在想你。感谢您的回复。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多