2017-08-10 29 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 = "," 
相關問題