我有以下浮动: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' –