【问题标题】:Differing NSNumberFormatter behavior不同的 NSNumberFormatter 行为
【发布时间】:2010-03-09 15:38:39
【问题描述】:

考虑这段代码:

NSNumberFormatter *nf = [[NSNumberFormatter alloc] init];
nf.numberStyle = NSNumberFormatterCurrencyStyle;

NSLocale *l = [[NSLocale alloc] initWithLocaleIdentifier:@"it_IT"];
nf.locale = l;
[l release];
nf.decimalSeparator = @",";
nf.currencySymbol = @"US$";
[nf setLenient:YES];
NSString *s = @"US$ 0,05";
double d = [[nf numberFromString:s] doubleValue];
NSLog(@"%.2f",d);`

如果我在普通的基于 Cocoa 控制台的应用程序 (10.6 sdk) 中执行此操作,我会在调试控制台中得到输出“0.05”。

但是,如果我在 iPhone 环境 (OS 3.1.3) 中执行此操作,我会得到“0.00”输出到调试控制台。我对 NSNumberFormatter 的使用有什么问题吗?或者这是两个平台之间的差异?

【问题讨论】:

  • 这是怎么复制的?链接的问题根本没有讨论这种不同的行为。
  • drewh:请编辑您的问题以包括记录nf 的指针(使用%p)和numberFromString: 的结果的输出。我怀疑nfnil,但知道numberFromString: 是返回nil 还是代表0.0 的NSNumber 可能会有所帮助。

标签: iphone cocoa cocoa-touch


【解决方案1】:
NSString *s = @"US$ 0,05";

如果去掉空格怎么办?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多