将浮点数格式化为NSString时,会截断额外的零

Hee*_*ena 1 cocoa cocoa-touch objective-c number-formatting

我试图格式化float如下:

1.1500将显示为"$ 1.15"
1.1000将显示为"$ 1.10"
1.0000将显示为"$ 1.00"
1.4710将显示为"$ 1.471"
1.4711将显示为"$ 1.4711"

我试过了

NSString *answer = [NSString stringWithFormat:@"$ %.2f",myvalue];
Run Code Online (Sandbox Code Playgroud)

Jos*_*ell 7

这正是NSNumberFormatter小号是:

float onefifteen = 1.1500;    // displayed as “$ 1.15”
float oneten = 1.1000;     // displayed as “$ 1.10”
float one = 1.0000;    // displayed as “$ 1.00”
float onefortyseventen = 1.4710;    // displayed as “$ 1.471”
float onefortyseveneleven = 1.4711;    // displayed as “$ 1.4711”

NSNumberFormatter * formatter =  [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterCurrencyStyle];
[formatter setUsesSignificantDigits:YES];   
// The whole number counts as the first "significant digit"
[formatter setMinimumSignificantDigits:3]; 

NSLog(@"%@", [formatter stringFromNumber:[NSNumber numberWithFloat:onefifteen]]);
NSLog(@"%@", [formatter stringFromNumber:[NSNumber numberWithFloat:oneten]]);
NSLog(@"%@", [formatter stringFromNumber:[NSNumber numberWithFloat:one]]);
NSLog(@"%@", [formatter stringFromNumber:[NSNumber numberWithFloat:onefortyseventen]]);
NSLog(@"%@", [formatter stringFromNumber:[NSNumber numberWithFloat:onefortyseveneleven]]);
Run Code Online (Sandbox Code Playgroud)

2011-12-15 19:36:52.185重要人物[49282:903] $ 1.15
2011-12-15 19:36:52.190重要人物[49282:903] $ 1.10
2011-12-15 19:36:52.190重要人物[49282:903] $ 1.00
2011-12-15 19:36:52.191重要资产[49282:903] $ 1.471
2011-12-15 19:36:52.192重要资产[49282:903] $ 1.4711