20

NSNumberFormatterから整数の GBP (£) を生成するために使用しようとしている がありますNSNumber。どの呪文を試しても、小数点以下 2 桁を取得し続けます。私のコードは次のとおりです。

NSNumberFormatter *fmtCurrency = [[[NSNumberFormatter alloc] init] autorelease];
[fmtCurrency setNumberStyle: NSNumberFormatterCurrencyStyle];
[fmtCurrency setGeneratesDecimalNumbers:FALSE];
[fmtCurrency setCurrencyCode:@"GBP"];
[fmtCurrency setCurrencySymbol:@"£"];
txtTotal.text = [fmtCurrency stringFromNumber: result.Bill ]; // this is an NSNumber
4

6 に答える 6

44

ゼロでsetMaximumFractionDigitsを呼び出したいと思います。

NSNumberFormatter *fmtCurrency = [[[NSNumberFormatter alloc] init] autorelease];
[fmtCurrency setNumberStyle: NSNumberFormatterCurrencyStyle];
[fmtCurrency setGeneratesDecimalNumbers:NO];
[fmtCurrency setCurrencyCode:@"GBP"];
[fmtCurrency setCurrencySymbol:@"£"];

NSNumber* myNumber = [NSNumber numberWithFloat:12.34];
NSString* myString = [fmtCurrency stringFromNumber:myNumber];
NSLog( @"the number is %@", myString );

[fmtCurrency setMaximumFractionDigits:0];
myString = [fmtCurrency stringFromNumber:myNumber];
NSLog( @"now it's %@", myString );  


2011-07-25 01:05:39.823 FormatterTest[841:707] the number is £12.34
2011-07-25 01:05:39.824 FormatterTest[841:707] now it's £12
于 2011-07-25T08:07:42.043 に答える
13

以下を試すことができます

[fmtCurrency setGeneratesDecimalNumbers:NO];
[fmtCurrency setMaximumFractionDigits:0];

また

@Praveenの提案に従ってintValueから取得するNSNumber

于 2011-07-25T08:30:55.650 に答える
4

NSNumberからintValueを抽出する必要があります。

于 2011-07-25T07:56:26.497 に答える
0

すべての NSNumberFormatter (非常に集中的) を削除して、次のようにすることができます。

txtTotal.text = [NSString stringWithFormat:@"£%d", result.Bill.intValue];
于 2011-07-25T12:49:27.250 に答える
-2

文字列を小数点以下 2 桁にフォーマットします... (私が探していたものでした) 適応...

            float distance = //distance with many decimals...;

            NSNumberFormatter *numberFormatter = [[[NSNumberFormatter alloc] init] autorelease];
            [numberFormatter setMaximumFractionDigits:2];

            //new distance with two decimals
            NSNumber* myNumber = [NSNumber numberWithFloat:distance];

幸運を

于 2012-01-12T11:40:08.733 に答える