2017-08-10 63 views
0

如何在swift中将Decimal转换为Stringswift如何将十进制类型转换为字符串类型

例如

let de = Decimal(string: "123") 

那么如何de转换为字符串。

+1

'de.description',但是你可能需要使用'as NSDecimalNumber'来访问'description(withLocale :)'。你也可以使用'NumberFormatter',尽管它总是先将小数转换为double,但在大多数情况下这不是问题。 – Sulthan

+0

十进制到字符串或字符串到十进制 –

回答

0

你可以简单地转换就像下面,

let decimalValue = Decimal(string:"12.34") 
let stringValue = decimalValue?.description 
print(stringValue ?? "Conversion Failed") 
0

使用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 = ","