标签: nsnumberformatter

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

我可以使用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或做一些事情,以便结果不会有"小数"

nsnumberformatter ios

17
推荐指数
3
解决办法
5358
查看次数

带逗号小数分隔符的NSNumberFormatter

我试图将像"12000.54"这样的NSString转换为"12.000,54".我写了一个NSNumberFormatter实例.

NSNumberFormatter *formatter = [[[NSNumberFormatter alloc] init] autorelease];
[formatter setFormatterBehavior:NSNumberFormatterBehavior10_4];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
[formatter setGroupingSeparator:@"."];
[formatter setDecimalSeparator:@","];
Run Code Online (Sandbox Code Playgroud)

但当我NSLog这个时:

NSLog(@"%@",[formatter stringFromNumber:[formatter numberFromString:value]]);
Run Code Online (Sandbox Code Playgroud)

它打印空值.如果我用一个点改变我的逗号它正常工作.我只是希望能够把我想要的东西放在我的分隔符字段(逗号,点,斜线等等)中,并且我有不同的输出:例如12/000,54 12.000.54 12,000,54.

你知道我怎么处理这个吗?

decimal objective-c separator nsnumberformatter ios

17
推荐指数
4
解决办法
3万
查看次数

如何将带有数字的字符串转换为具有逗号而非小数点的NSDecimalNumber?

我有一个界面给我这样的数字0000000012345,78

所以我想出了如何用它们制作一个数字.但我需要用这个数字计算,我实际需要的是一个十进制数.

NSNumberFormatter *fmtn = [[NSNumberFormatter alloc] init];
[fmtn setFormatterBehavior:NSNumberFormatterBehavior10_4];
[fmtn setNumberStyle:NSNumberFormatterDecimalStyle];
[fmtn setDecimalSeparator:@","];
NSNumber *test = [fmtn numberFromString:@"0000000012345,78"];
Run Code Online (Sandbox Code Playgroud)

如何将NSNumber设为NSDecimalNumber?

编辑:这是我最终得到的代码:

NSDictionary *localeDict = [NSDictionary dictionaryWithObject:@"," forKey:@"NSDecimalSeparator"];
NSDecimalNumber *test = [[NSDecimalNumber alloc] initWithString:@"00000000012345,78" locale:localeDict];
Run Code Online (Sandbox Code Playgroud)

如何将语言环境字典放在一起不能被描述为"记录良好",并且我花了一些谷歌搜索来找到一个例子.

这个也有效:

NSLocale *deLoc = [[NSLocale alloc] initWithLocaleIdentifier:@"de"];
NSDecimalNumber *testd = [NSDecimalNumber decimalNumberWithString:@"00000000012345,78" locale:deLoc];
Run Code Online (Sandbox Code Playgroud)

iphone objective-c nsnumber nsnumberformatter

14
推荐指数
2
解决办法
8645
查看次数

格式化数字以显示逗号和/或美元符号

我想用逗号或更好的格式化我的UILabel,带有美元符号和逗号(没有小数).

这是我正在使用的代码:

IBOutlet UILabel *labelrev

float rev = (x + y)

labelrev.text = [[NSString alloc] initWithFormat:@%2.f",rev];
Run Code Online (Sandbox Code Playgroud)

我得到xxxxxxxxx作为输出我想得到xxx,xxx,xxx或$ xxx,xxx,xxx

我怎么做?

formatting objective-c uilabel nsnumberformatter

14
推荐指数
2
解决办法
3万
查看次数

为什么NSNumberFormatter不删除小数点和尾随零?

我想将unsigned long int转换为NSString,每3个数字用逗号格式化,既不是小数点也不是尾随零.我可以使用NSNumberFormatter将逗号放入NSString中,但由于某种原因,我无法获得小数点和0.

这是我的代码:

NSNumberFormatter *fmtr;
unsigned long int intToBeDisplayed;
intToBeDisplayed = 1234567890;
fmtr = [[[NSNumberFormatter alloc] init] autorelease];
[fmtr setUsesGroupingSeparator:YES];
[fmtr setGroupingSeparator:@","];
[fmtr setGroupingSize:3];
[fmtr setAlwaysShowsDecimalSeparator:NO];
NSLog([fmtr stringFromNumber:[NSNumber numberWithUnsignedLong:intToBeDisplayed]]);
Run Code Online (Sandbox Code Playgroud)

日志显示"1,234,567,890.00",适当地添加逗号但不幸的是不需要的".00".我已尝试使用int而不是unsigned long int,使用较小的整数值,以及来自各种博客的其他构造都无济于事.我非常感谢有关如何从NSString中获取小数点和尾随零的任何建议.

我是Objective-C的新手,在试图解决这个问题的模糊眼睛综合症方面成为老手,但是在那个阶段,在Objective-C中学到的每一点教训和成功都是一个巨大的快乐源泉.

objective-c nsnumberformatter

13
推荐指数
3
解决办法
1万
查看次数

iPhone NSNumberFormatter setFormat:

看起来好像NSNumberFormatter's设置自定义的方法formatters.setFormat:在iPhone上不可用...

这样......崩溃我的应用程序:

NSNumberFormatter *lengthFormatter = [[NSNumberFormatter alloc] init];
[lengthFormatter setFormatterBehavior:NSNumberFormatterBehavior10_4];
[lengthFormatter setNumberStyle:NSNumberFormatterDecimalStyle];
[lengthFormatter setFormat:@"#,##0.0M"];
Run Code Online (Sandbox Code Playgroud)

这是否发生在其他人身上?

谢谢,

丹**以下答案.NSNumberFormatter也有称为setPositiveFormat: setNegativeFormat:替换折旧setFormat:**的方法

iphone cocoa-touch nsnumberformatter

11
推荐指数
1
解决办法
1万
查看次数

NSLocale货币符号,显示金额值之前或之后

我正在使用StoreKit我的应用程序中的应用程序内购买商店.

我有一个自定义设计,这意味着价格的价值应该是白色和大,货币符号更小,更暗,并与价格值的顶部对齐.

通过使用NSLocalein SKproductpriceLocale属性和属性中的价格值,我可以毫无问题地获得货币符号price.

我的问题是知道何时应该在价格之前加上货币符号以及何时将货币符​​号放在价格之后.

例子:

  • $ 5,99
  • 0,79€

我可以轻松地使用它NSNumberFormatter来"开箱即用",但由于我的布局为价值和货币符号定义了不同的风格,我发现自己处于需要更多手动解决方法的位置.

有什么想法吗 ?

objective-c storekit nsnumberformatter ios nslocale

11
推荐指数
2
解决办法
6133
查看次数

如何在NSNumberFormatter的输出上强制使用符号字符

我想使用数字格式化程序来生成我的输出,因此数字会自动格式化为用户的语言环境,但是我希望它在printf()中"%+.1f"一样工作,它总是有指定的符号.

NSNumberFormatter *nf = [[NSNumberFormatter alloc] init];
nf.numberStyle = NSNumberFormatterDecimalStyle;
nf.maximumFractionDigits = 1;

double val = 3.1234;
label.text = [NSString stringWithFormat: @"XXX %@ XXX", [nf stringFromNumber: [NSNumber numberWithDouble: val]]];
Run Code Online (Sandbox Code Playgroud)

我希望标签在美国出现"XXX +3.1 XXX",并为任何其他位置提供相应但等效的字符串.我能找到的唯一的东西是setPositiveFormat:setPositivePrefix:.

但我希望设置的格式,因为我不知道如何在其他国家的格式化数字; 我不知道是否使用加号来指定阿拉伯语或俄语中的正数或某些我没有想到的文化.我知道,例如,小数点,逗号,空格等在欧洲国家与美国相比都有不同的含义 - 对于+/-符号也是如此吗?

我现在做的是:

label.text = [NSString stringWithFormat: @"XXX %s%@ XXX", (val < 0) ? "" : "+",
    [nf stringFromNumber: [NSNumber numberWithDouble: val]]];
Run Code Online (Sandbox Code Playgroud)

但这假定'+'和' - '对所有格式都是正确的.

我敢肯定它一定存在,因为它是一个标准格式化的东西,自从黑暗时代以来一直在printf()中 ...

objective-c nsnumberformatter ios

11
推荐指数
2
解决办法
5222
查看次数

在ios中舍入小数部分

NSNumberFormatter *format = [[NSNumberFormatter alloc]init];
[format setNumberStyle:NSNumberFormatterDecimalStyle];
[format setRoundingMode:NSNumberFormatterRoundHalfUp];
[format setMaximumFractionDigits:2];
NSString *temp = [format stringFromNumber:[NSNumber numberWithFloat:23.4451]];
NSLog(@"%@",temp);
Run Code Online (Sandbox Code Playgroud)

我需要将六位小数除以二进制数.在iOS中,我尝试了上面的代码.当我输入23.45时,我得到答案23.5,但当我输入23.445时答案是23.44.

有人可以在iOS中清理"向上一半".

nsnumberformatter ios

10
推荐指数
1
解决办法
7178
查看次数

如何设置NSNumberFormatter使用"万"(日文/中文10,000标记)显示数字?

我的iOS应用会显示不同的货币(美元,日元,澳元,欧元)在不同的本地化(en_US,en_AU,ja_JP等).

对于日语区域/语言(两者都在我的设备上设置),如果我有:

NSNumberFormatter *fmt = [[NSNumberFormatter alloc] init];
fmt.numberStyle = NSNumberFormatterCurrencyStyle;
fmt.currencyCode = @"JPY";
NSString *labelText = [fmt stringFromNumber:@1000000];
Run Code Online (Sandbox Code Playgroud)

我的标签文字是¥1,000,000.但是,在日文和中文中,可能会写入大于10,000的数字100??,这是我想要的输出.

知道我可以写什么代码100??作为输出吗?

我想避免我的代码中的逻辑块检查locale/region,但我觉得这就是我要反对的东西(例如,使用方法调用fmt.multipler = @(1/10000)将1,000,000除以10,000以获得正确的值).

currency nsnumberformatter ios

10
推荐指数
1
解决办法
1186
查看次数