如何在swift中将Decimal
转换为String
?
例如
let de = Decimal(string: "123")
然后如何将de
转换为String。
答案 0 :(得分:2)
转换为NSDecimalNumber并使用stringValue。
NSDecimalNumber(decimal: de).stringValue
答案 1 :(得分:-1)
在Swift 3及更高版本中尝试此操作
extension Formatter {
static let stringFormatters: NumberFormatter = {
let formatter = NumberFormatter()
formatter.numberStyle = .none
return formatter
}()
}
extension Decimal {
var formattedString: String {
return Formatter.stringFormatters.string(for: self) ?? ""
}
}
你可以这样显示
label.text = someDecimal.formattedString
答案 2 :(得分:-2)
使用NSNumberFormatter
解析您的输入。将其generatesDecimalNumbers
属性设置为true:
let formatter = NumberFormatter()
formatter.generatesDecimalNumbers = true
如果你想在无法解析字符串时返回0,这就是你如何使用它:
func decimal(with string: String) -> NSDecimalNumber {
return formatter.number(from: string) as? NSDecimalNumber ?? 0
}
decimal(with: "80.00")
// Result: 80 as an NSDecimalNumber
默认情况下,格式化程序将查看设备的区域设置以确定小数点标记。你应该这样离开。为了举例,我将强制它到法语区域:
// 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
如果您确实希望始终使用逗号作为小数点,则可以设置decimalSeparator
属性:
formatter.decimalSeparator = ","