【问题标题】:NSNumberFormatter-Decimal Style-To format unlimited charactersNSNumberFormatter - 十进制样式 - 格式化无限个字符
【发布时间】:2011-12-25 07:25:53
【问题描述】:

下面的代码用于我要求将无限字符格式化为十进制样式。但它最多只能用于 18 位,

NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];    

[formatter setNumberStyle:NSNumberFormatterDecimalStyle];

long long num =  [textField.text longLongValue];

NSString *formattedOutput = [formatter stringFromNumber:[NSNumber numberWithLongLong:num]];

textField.text = formattedOutput;

[formatter release];

怎么办?

提前致谢 巴斯卡

【问题讨论】:

    标签: iphone ios xcode ipad ios-simulator


    【解决方案1】:

    我在格式化的字符串中没有看到问题,问题可能在文本字段中。

    例子:

    long long maxLongLong = 0x7fffffffffffffff;
    NSLog(@"maxLongLong: %llu", maxLongLong);
    
    NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];    
    [formatter setNumberStyle:NSNumberFormatterDecimalStyle];
    NSString *formattedOutput = [formatter stringFromNumber:[NSNumber numberWithLongLong:maxLongLong]];
    NSLog(@"formattedOutput: %@", formattedOutput);
    

    NSLog 输出:

    maxLongLong: 9223372036854775807
    formattedOutput: 9,223,372,036,854,775,807
    

    但是,NSNumberFormatter 似乎不适用于 unsigned long long

    【讨论】:

    • 感谢您的代码,它对我的​​帮助更大。但是我有一个问题,我在'textfieldshouldEndEditing'中使用了你的代码,第一次它正常工作但是当我们回到文本字段并从中出来时,值会发生变化。例如,我第一次输入的值是 123456789123456789 并得到了这个输出 123,456,789,123,456,789 现在当我们重新进入和退出文本字段时,无论是否编辑,我得到的值是 123。其他问题是,它的格式最多 18 个字符只有当输入超过 18 个时,我们才会得到其他答案,即 9,223,372,036,854,775,807。
    • 检查 textField 代码,你得到正确的字符串了吗? 9223372036854775807 是 long long 的最大有符号整数,对于较大的数字,您将不得不使用浮点、工具自己的数字处理或精细处理较大整数的数字包。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多