iphone – 将双精度限制为两个小数位,不带尾随零

我读的是thisthat.我想这是正确的:

1.4324 => “1.43”
9.4000 => “9.4”
43.000 => “43”

9.4 => “9.40” (wrong)
43.000 => “43.00” (wrong)

在这两个问题的答案指向NSNumberFormatter。所以应该很容易实现,但不是为我。

- (void)viewDidLoad {
    [super viewDidLoad];
    UILabel *myLabel = [[UILabel alloc] initWithFrame:CGRectMake(50, 100, 200, 20)];

    NSNumberFormatter *doubleValueWithMaxTwoDecimalPlaces = [[NSNumberFormatter alloc] init];
    [doubleValueWithMaxTwoDecimalPlaces setNumberStyle:NSNumberFormatterDecimalStyle];
    [doubleValueWithMaxTwoDecimalPlaces setPaddingPosition:NSNumberFormatterPadAfterSuffix];
    [doubleValueWithMaxTwoDecimalPlaces setFormatWidth:2];

    NSNumber *myValue = [NSNumber numberWithDouble:0.01234];
    //NSNumber *myValue = [NSNumber numberWithDouble:0.1];

    myLabel.text = [doubleValueWithMaxTwoDecimalPlaces stringFromNumber:myValue];

    [self.view addSubview:myLabel];
    [myLabel release];
    myLabel = nil;
    [doubleValueWithMaxTwoDecimalPlaces release];
    doubleValueWithMaxTwoDecimalPlaces = nil;
}

我也试过

NSString *resultString = [NSString stringWithFormat: @"%.2lf", [myValue doubleValue]];
NSLog(@"%@", resultString);

那么如何用最大两个小数位来格式化双精度值呢?如果最后一个位置包含零,则应省略零。

解:

NSNumberFormatter *doubleValueWithMaxTwoDecimalPlaces = [[NSNumberFormatter alloc] init];
[doubleValueWithMaxTwoDecimalPlaces setNumberStyle:NSNumberFormatterDecimalStyle];
[doubleValueWithMaxTwoDecimalPlaces setMaximumFractionDigits:2];
NSNumber *myValue = [NSNumber numberWithDouble:0.01234];
NSLog(@"%@",[doubleValueWithMaxTwoDecimalPlaces stringFromNumber:myValue]];
[doubleValueWithMaxTwoDecimalPlaces release];
doubleValueWithMaxTwoDecimalPlaces = nil;
尝试在配置格式化程序时添加以下行:

    [doubleValueWithMaxTwoDecimalPlaces setMaximumFractionDigits:2];
http://stackoverflow.com/questions/4026135/limit-a-double-to-two-decimal-places-without-trailing-zeros

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:iphone – 将双精度限制为两个小数位,不带尾随零