使用 NSNumberFormatter 为 Currency 生成前导零

Produce leading zero with NSNumberFormatter for Currency

对于数字,格式化后,我希望它显示为$050,下面的代码不起作用。但是如果我使用 NSNumberFormatterDecimalStyle,它可以显示 050。你知道为什么吗?

    NSNumberFormatter *f = [[NSNumberFormatter alloc] init] ;
    f.numberStyle = NSNumberFormatterNoStyle;

    NSNumber *myNumber;
    NSString *myString;     

    myNumber = [f numberFromString:@"50"]; // Note that the extra zeros are useless
    [f setNumberStyle:NSNumberFormatterCurrencyAccountingStyle];
    [f setFormatWidth:3];
    //[f setPaddingPosition:NSNumberFormatterPadAfterPrefix];
    [f setPaddingCharacter:@"0"];
    myString = [f stringFromNumber:myNumber];
    NSLog(@"myString: %@",myString);

无聊的答案是美国货币样式(据我所知还有澳大利亚和加拿大货币)从不使用前导零,除非金额是零美元和一些美分(例如“$0.43”)。 NSNumberFormatterDecimalStyle,另一方面,可以使用填充零。