【发布时间】:2020-07-28 13:59:33
【问题描述】:
我只是想将 String 转换为 Double 。这是我为此使用的功能:
private func calculateListPrice(index: Int) -> Double {
var price = Double(0.0)
for wish in self.dataSourceArray[index].wishes {
var priceTrimmed = wish.price.trimmingCharacters(in: CharacterSet(charactersIn: "0123456789.").inverted)
priceTrimmed = priceTrimmed.replacingOccurrences(of: ",", with: ".")
print(priceTrimmed)
if let doublePrice = Double(priceTrimmed) {
price += doublePrice
// return value * 100 so updateAmount calculates correct Int Value
}
}
let rounded = Double(round(100*price)/100)
print(rounded)
return rounded
}
问题是这不适用于每个数字。这是一个免费的例子:
没有:999.999.99
是:2.22
是:505.05
是:31.11
否:3.111.50
是的:999.99
没有:2.000.00
【问题讨论】:
-
对您来说“999.999.99”意味着什么? 999999.99 ? (99后的“单位”)?您是在寻找 NumberFormatter 吗?
-
@Larme 不确定,以前从未使用过,但我的意思是 999999.99
-
replacingOccurrences(of: ",", with: ".")如果 ',' 是千位分隔符,则不要这样做。 -
@JoakimDanielson 我该怎么做?
-
查看@zrzka 的评论,但当然要改用NumberFormatter。