【发布时间】: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:的结果的输出。我怀疑nf是nil,但知道numberFromString:是返回nil还是代表0.0 的NSNumber 可能会有所帮助。
标签: iphone cocoa cocoa-touch