ios - 带有数字样式的 NSNumberFormatter NSNumberFormatterCurrencyStyle 有逗号问题

标签 ios objective-c localization nsnumberformatter currency-formatting

我正在尝试通过某些项目的投入费用来做正确的事情。因此,当在使用逗号分隔小数的区域设置的设备上工作时(小数位自动设置逗号“,”而不是点“.”供用户输入 ) 我使用核心数据将值存储在以这种方式转换文本的双变量中:

NSNumberFormatter * f = [[NSNumberFormatter alloc] init];
[f setNumberStyle:NSNumberFormatterDecimalStyle];
[f setMaximumFractionDigits:2];
NSNumber * gasto = [f numberFromString:(((UITextField*) [cell viewWithTag:11]).text)];
destino.nuevaTrans.gasto = [gasto doubleValue];
//destino.nuevaTrans is the managed object, nothing weird there, just storing the decimal value

但是当从存储的对象中取出值并在 TableView 中显示它们时,由于逗号分隔的区域设置(?),我丢失了小数点。这样做:

etiq = (UILabel*) [cell.contentView viewWithTag:12];
NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setNumberStyle:NSNumberFormatterCurrencyStyle];
etiq.text = [numberFormatter stringFromNumber:@(trans.gasto)];

//debugging console output:
//remmember, trans.gasto is only a double
NSLog(@"a: %f, b: %@", trans.gasto ,[numberFormatter stringFromNumber:@(trans.gasto)]);

模拟器上使用点“.”的输出语言环境设置工作正常,但在使用逗号 ',' 设置的设备上部署时,NSNumberFormatter 似乎无法将其正确转换为货币样式。

//output on the simulator:
2014-09-07 15:00:47.561 iSpend[3930:60b] a: 2.990000, b: $2.99

//output on the device:
2014-09-07 15:02:40.005 iSpend[1389:60b] a: 2.170000, b: ₡2

所以,我可以尝试破解这个东西……但我正在寻找更好的编程实践。每一个建议表示赞赏!谢谢!

最佳答案

每个语言环境决定它是显示美分还是只显示克朗。因此,如果您想强制它在逗号后显示数字,请添加以下行:

[numberFormatter setMinimumFractionDigits:2];

获取逗号后的两位数。

但是你展示的例子有正确的输出。

关于ios - 带有数字样式的 NSNumberFormatter NSNumberFormatterCurrencyStyle 有逗号问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25710504/

相关文章:

javascript - 使用 javascript(客户端)获取访问者语言和国家代码

xml - 使用 MSXML 以 UTF-8 格式保存 XML

ios - 在 tableView 中检索选定的行

ios - 在 UIView 中定位文本

objective-c - 如何为 NSComboBox 启用不区分大小写的自动完成功能?

objective-c - 向iPhone App iphone sdk添加收藏夹功能

localization - 使用 ASPNETCore 1.1.1 本地化将当前文化默认设置为浏览器文化

ios - 更改图标会导致 SwiftUI 动画出现故障?

iphone - UITableView 刷新导航 Controller 中的数据

iphone - 导航栏的自定义背景图像 - 大小调整和后退按钮着色