我有以下浮動:1123455432.67899
如何從一個浮動值與小數斯威夫特
我期望的結果是一個字符串:1,123,455,432.67899
最好的情況正確,
和基於位置.
(US /歐洲)
struct Number {
static let withSeparator: NumberFormatter = {
let formatter = NumberFormatter()
formatter.groupingSeparator = ","
formatter.numberStyle = .decimal
return formatter
}()
}
let myFloat: Float = 1123455432.67899
let myNumber = NSNumber(value: myFloat)
let formatter = Number.withSeparator
if let result = formatter.string(from: myNumber) {
print(result)
}
此格式的偉大工程,只要我的持股量沒有小數,ALS只要我有小數,它開始「計算」。它基於第三個十進制數字計算向上/向下。
我錯過了什麼?什麼是獲得從不管有多少十進制數一Float
一個String: 1,123,455,432.67899
的最佳方式?非常感謝幫助。
編輯:
我的確切功能:
func formatValue(_ value: String) -> String {
if let double = Double(value) {
let formatter = Number.withSeparator
if let result = formatter.string(from: NSNumber(value: double)) {
return result
} else {
return value
}
} else {
return value
}
}
value
總是例如5.5555555555
一個數字。但在這個特定的情況下,result = 5.556
。的Float
您確定要指定'grouping'分離器','?並非所有地方都使用它。 – Alexander
不,我不需要有分離由'被迫,',這只是示例代碼 –
甲'Float'是一個32位的二進制浮點數。它可以表示約7位十進制數字,比較https://en.wikipedia.org/wiki/IEEE_floating_point。對於精確*十進制*算術,使用'(NS)DecimalNumber' –