swift如何将Decimal类型转换为String类型

时间:2017-08-10 10:02:42

标签: swift decimal

如何在swift中将Decimal转换为String

例如

let de = Decimal(string: "123")

然后如何将de转换为String。

3 个答案:

答案 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 = ","