我從 JSON 獲取字串格式的浮點值,如下所示
JSON:
{
"result": {
"conversion_factor": {
"conv_factor": "0.820000"
}
"search_result": [
{
"standard_rate_in_usd": "10.00",
現在我需要乘以conv_factor * standard_rate_in_usd
代碼:
let convResult = (oneSerdet.standard_rate_in_usd) * (searchResult?.result?.conversion_factor?.conv_factor)
cell.priceLbl.text = convResult
錯誤:請指導我將兩個字串相乘
二元運算子“*”不能應用于兩個“字串?” 運算元
編輯:這個代碼只有第一個值正確剩余顯示錯誤為什么?..我在tableview cellfor row中顯示結果
var stringPrice: String?
if var priceVal = Float(oneSerdet.standard_rate_in_usd!), var convVal = Float((searchResult?.result?.conversion_factor?.conv_factor)!) {
stringPrice = String(priceVal * convVal)
}
cell.priceLbl.text = stringPrice
uj5u.com熱心網友回復:
您需要轉換為浮點數:
let convResult = Float(oneSerdet.standard_rate_in_usd) *
Float(searchResult?.result?.conversion_factor?.conv_factor)
uj5u.com熱心網友回復:
試試這個,希望這能解決你的問題
if let conv_factor = oneSerdet.conv_factor,
let factor = Double(conv_factor),
let standard_rate_in_usd = oneSerdet.standard_rate_in_usd,
let usd = Double(standard_rate_in_usd) {
print(factor*usd)
cell.priceLbl.text = "\(factor*usd)"
}else{
cell.priceLbl.text = ""
print("Unreachable")
}
uj5u.com熱心網友回復:
您有多個問題:
您的構造
searchResult?.result?.conversion_factor?.conv_factor評估為可選字串:String?。你不能乘以字串。字串不是數字。您需要將字串轉換為 Double。但是接受字串的 Double 初始化程式也回傳一個 Optional (例如,因為“Apple”不能轉換為 Double.
這是一些示例代碼,它將采用 2 個可選字串,嘗試將它們轉換為雙精度,并將它們相乘。
let xString: String? = "123.456"
let yString: String? = "2.0"
let x = xString.map { Double($0) ?? 0 } ?? 0.0
let y = yString.map { Double($0) ?? 0 } ?? 0.0
let result: Double = x * y
print(result)
那輸出
246.912
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/494623.html
下一篇:將dict合并到串列中
