【发布时间】:2014-08-26 01:05:20
【问题描述】:
我能够将此函数编写为 NSDecimalNumber 的扩展方法,这对我来说效果很好。它需要一些数字并将其格式化为货币字符串。如果它包含 .00,它将截断它,但如果它是 .23 或 .45 之类的东西,它将保留小数。
func toCurrencyString() -> String
{
let nf = NSNumberFormatter()
nf.numberStyle = NSNumberFormatterStyle.CurrencyStyle
//Determine whether to show decimals or not (if trailing zeros exist, do not show)
if (trunc(self.floatValue) == self.floatValue) {
nf.maximumFractionDigits = 0
} else {
nf.maximumFractionDigits = 2
}
return nf.stringFromNumber(self)
}
我有一个问题: 如何实现上面类似的函数,它返回一个格式化的字符串,但四舍五入?所以像 45.55 这样的数字就是 46(没有小数)
我尝试使用在操场上工作的 round(),但是当我使用它的扩展方法时,它说'round() 的模糊使用'。
另外..出于好奇,以上对于不同的地区是否安全,就像它在美国完美地显示给我一样,但如果用户的手机在英国,它会自动工作吗?
非常感谢!
【问题讨论】:
-
您不应该将货币存储在浮点值中。谷歌搜索数百个参数为什么它是错误的。
-
参见:超人 3。
-
我正在使用 NSDecimalNumber - 这不是正确的方法吗?