使用NSNumberFormatter防止小数

Ech*_*lon 18 iphone string-formatting nsnumberformatter ios

我有一个NSNumberFormatter,我试图用来从NSNumber生成一整套GBP(£).无论我尝试哪种咒语,我都会得到两位小数.我的代码是:

    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
Run Code Online (Sandbox Code Playgroud)

zpa*_*ack 41

我想你想用零调用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
Run Code Online (Sandbox Code Playgroud)


vis*_*kh7 12

您可以尝试以下方法

[fmtCurrency setGeneratesDecimalNumbers:NO];
[fmtCurrency setMaximumFractionDigits:0];
Run Code Online (Sandbox Code Playgroud)

要么

获得intValueNSNumber由@Praveen的建议

  • 谢谢,通过将minimumFractionDigits和maximumFractionDigits设置为零,我得到了我需要的东西. (2认同)