我需要从美分转换为欧元
{
ref: "1dsdsd",
title: "XXXXXX",
price: 92820
},
{
ref: "2ddsds",
title: "XXXXXX",
price: 12830
},
{
ref: "3dsds",
title: "XXXXXXX",
price: 885
}
]
如果价值是885美分,我们应该读8.85euros,但是 Web服务返回的值不一致:2、3、5位数字
我的解决方案不允许通过删除多余的小数返回欧元值
extension Int {
func format() -> String {
let double = Double(self) / 100
return String(format: "€ %.02f", double)
}
}
答案 0 :(得分:2)
请勿尝试使用您自己的代码执行此操作,因为有太多变量需要考虑。而是使用NumberFormatter
,将其numberStyle
设置为所需的适当货币样式。
如果您的代码未在货币为欧元的语言环境中运行,则可以将格式程序的locale
属性设置为它所在的位置– 请勿更改货币符号通过设置currencyCode
或相关属性,语言环境会携带有关布局的更多信息。
您的值以整数分为单位,是货币值的不错选择,不幸的是NumberFormatter
期望单位为欧元(或英镑等)。您可以通过两种方式解决此问题:(a)在将数字传递给格式化程序之前将其除以100,或者(b)将格式化程序的multiplier
属性设置为0.01
(注意:在后一种情况下,您仍然必须传递要格式化为浮点数的数字(例如Double
),否则美分将被截断,这是NumberFormatter
的功能/错误)