iOS - 使用NSNumberFormatter显示没有美分的货币

Sat*_*yam 17 nsnumberformatter ios

我可以使用NSNUmberFormatter将特定的NSNumber转换为货币.它的showign $符号,数字用","等分隔.
但我不想显示美分.
例如它显示$ 537,335.32
我只想显示$ 536,335
我正在编写以下代码:

NSNumberFormatter *currencyFormatter = [[[NSNumberFormatter alloc] init] autorelease];
[currencyFormatter setNumberStyle:NSNumberFormatterCurrencyStyle];

NSDictionary* tempDict = [self.displayDict objectForKey:kConservative];
conservativeHP.text = [currencyFormatter stringFromNumber:[tempDict objectForKey:kHomePrice]];
Run Code Online (Sandbox Code Playgroud)

我应该如何创建NSNumberFormatter或做一些事情,以便结果不会有"小数"

dre*_*ish 44

使用maximumFractionDigits设置:

NSNumberFormatter *currencyFormatter = [[[NSNumberFormatter alloc] init] autorelease];
[currencyFormatter setNumberStyle:NSNumberFormatterCurrencyStyle];
[currencyFormatter setMaximumFractionDigits:2];
Run Code Online (Sandbox Code Playgroud)

您可以相应地调整值.使用2将结果限制为两位数,对于此问题,值为0应该这样做.


Zul*_*ain 7

这是迅速的解决方案3

    let formatter = NumberFormatter()
    formatter.numberStyle = .currency
    //formatter.locale = NSLocale.current
    formatter.currencySymbol = "" //In case you do not want any currency symbols
    formatter.maximumFractionDigits = 0
Run Code Online (Sandbox Code Playgroud)

将设置maximumFractionDigits0不会显示任何十进制或小数值。


Ant*_* MG -3

在将数字添加到格式化程序之前,将其更改为 int 以避免小数,如下所示:

float myValue = 543.32;

NSNumber myNumber = [NSNumber numberWithInt: (int)myValue)];
Run Code Online (Sandbox Code Playgroud)

您将摆脱小数部分!

  • 您不需要更改原始值,只需将数字复制到 int 变量中,我没有看到问题 (2认同)