【问题标题】:How to get the decimal symbol?如何获得十进制符号?
【发布时间】:2011-03-22 20:52:10
【问题描述】:

我想知道设备上设置的十进制符号。直到现在我都在使用这种方法:

NSString *decimalSymbol;     
NSNumberFormatter *f = [[NSNumberFormatter alloc] init];    
[f setNumberStyle:NSNumberFormatterDecimalStyle];   
[f setMinimumFractionDigits:2];     
[f setMaximumFractionDigits:2];     
[f setGroupingSeparator:@" "];      

NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];    
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];   
[formatter setMinimumFractionDigits:2];     
[formatter setMaximumFractionDigits:2];     
[formatter setGroupingSeparator:@" "];      

NSRange range = {1,1};  

decimalSymbol = [[formatter stringFromNumber:[f numberFromString:[@"" stringByAppendingFormat:@"%.02f", 1.0f]]] substringWithRange:range];  

[formatter release];    
[f release];

到目前为止,当我在另一台设备 (4.3) 上进行测试时,它工作正常 - 返回 null。 可能是什么问题?

还有其他方法可以检索十进制符号吗?

稍后编辑:
我可以使用:

decimalSymbol = [[@"" stringByAppendingFormat:@"%.02f", 1.0f] substringWithRange:range];

但是为什么它在这个特定设备上不起作用?

【问题讨论】:

    标签: iphone objective-c cocoa-touch nsnumberformatter


    【解决方案1】:
    NSNumberFormatter *formatter = [[[NSNumberFormatter alloc] init] autorelease];
    NSString *decimalSymbol = [formatter decimalSeparator];
    

    【讨论】:

      【解决方案2】:

      最好的方法是从当前语言环境中获取小数点分隔符而不初始化任何NSNumberFormatter 对象。 像这样:

      [[NSLocale currentLocale] objectForKey:NSLocaleDecimalSeparator]
      

      【讨论】:

      • 或来自 iOS 10+,[NSLocale currentLocale].decimalSeparator;
      【解决方案3】:

      Swift 4 版本:

      Locale.current.decimalSeparator
      

      【讨论】:

        【解决方案4】:

        斯威夫特 4

        您可以使用Locale.current.decimalSeparatorNSLocale.current.decimalSeparator

        Foundation 框架的 Swift 覆盖提供了 Locale 结构,它连接到 NSLocale 类。

        当你需要引用语义或其他的时候使用 NSLocale 特定于基金会的行为。

        NSLocale Apple doc

        【讨论】:

          【解决方案5】:

          十进制分隔符

          返回一个字符串,其中包含接收方用来表示小数分隔符的字符。

          - (NSString *)decimalSeparator

          例子:

          decimalSymbol = [f decimalSeparator];

          【讨论】:

            猜你喜欢
            • 2014-09-08
            • 2018-06-21
            • 2016-07-18
            • 2012-03-24
            • 1970-01-01
            • 1970-01-01
            • 2021-12-22
            • 2013-08-20
            • 2018-08-04
            相关资源
            最近更新 更多