如何快速转换Decimal为String?
例如
let de = Decimal(string: "123")
Run Code Online (Sandbox Code Playgroud)
那么如何转换de为String。
利用 Decimal 符合协议的事实,CustomStringConvertible我会简单地做:
let decimalString = "\(de)"
Run Code Online (Sandbox Code Playgroud)
小智 -3
使用 anNSNumberFormatter来解析您的输入。将其generatesDecimalNumbers属性设置为 true:
let formatter = NumberFormatter()
formatter.generatesDecimalNumbers = true
Run Code Online (Sandbox Code Playgroud)
如果您想在无法解析字符串时返回 0,请使用以下方法:
func decimal(with string: String) -> NSDecimalNumber {
return formatter.number(from: string) as? NSDecimalNumber ?? 0
}
decimal(with: "80.00")
// Result: 80 as an NSDecimalNumber
Run Code Online (Sandbox Code Playgroud)
默认情况下,格式化程序将查看设备的区域设置以确定小数点标记。你应该就这样。举例来说,我将强制其使用法语语言环境:
// DON'T DO THIS. Just an example of behavior in a French locale.
formatter.locale = Locale(identifier: "fr-FR")
decimal(with: "80,00")
// Result: 80
decimal(with: "80.00")
// Result: 0
Run Code Online (Sandbox Code Playgroud)
如果你确实想始终使用逗号作为小数点,你可以设置该decimalSeparator属性:
formatter.decimalSeparator = ","
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16076 次 |
| 最近记录: |