无法在Swift中乘以两个字符串值

发布于 2025-02-09 13:53:35 字数 943 浏览 1 评论 0原文

我从JSON的JSON中获得float值的浮点数

{
 "result": {

  "conversion_factor": {
        "conv_factor": "0.820000"
    }
    "search_result": [
        {
         "service_details": [
                {
                  "standard_rate_in_usd": "10.00",

现在我需要乘以conv_factor * standard_rate_in_in_in_usd

code:此代码仅首先使用此代码值得正确的剩下的剩下的剩余表现出了什么?

let indexData = searchResult?.result?.search_result?[indexPath.row]

if let servDetls = indexData?.service_details{

for oneSerdet in servDetls{
    
    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)
    }
    else{
        stringPrice = ""
    }
    cell.priceLbl.text = "£ \(stringPrice ?? "") \(currData)"
}
}

I am getting float value in string format from JSON like below

JSON:

{
 "result": {

  "conversion_factor": {
        "conv_factor": "0.820000"
    }
    "search_result": [
        {
         "service_details": [
                {
                  "standard_rate_in_usd": "10.00",

now i need to multiply conv_factor * standard_rate_in_usd

code: with this code only first value coming correct remaining showing wrong why?

let indexData = searchResult?.result?.search_result?[indexPath.row]

if let servDetls = indexData?.service_details{

for oneSerdet in servDetls{
    
    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)
    }
    else{
        stringPrice = ""
    }
    cell.priceLbl.text = "£ \(stringPrice ?? "") \(currData)"
}
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

ˇ宁静的妩媚 2025-02-16 13:53:36

您需要转换为浮标:

let convResult = Float(oneSerdet.standard_rate_in_usd) * 
Float(searchResult?.result?.conversion_factor?.conv_factor)

You need to convert to floats:

let convResult = Float(oneSerdet.standard_rate_in_usd) * 
Float(searchResult?.result?.conversion_factor?.conv_factor)
爱要勇敢去追 2025-02-16 13:53:36

尝试一下,希望这能解决您的问题

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")
}

Try this, hope this will resolves your issue

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")
}
娇俏 2025-02-16 13:53:36

您有多个问题:

  1. 您的construct searchResult?.result?.conversion_factor?.conv_factor对可选字符串进行评估:string?

  2. 您不能乘以字符串。字符串不是数字。您需要将字符串转换为双重。但是,采用字符串的双初始化器也返回可选(例如,“ Apple”无法转换为双重。

这里是一些示例代码,可以使用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

You have multiple problems:

  1. Your construct searchResult?.result?.conversion_factor?.conv_factor evaluates to an Optional String: String?.

  2. You can't multiply strings. Strings are not numeric. You need to convert your string to a Double. But the Double initializer that takes a string also returns an Optional (since "Apple", for example, can't be converted to a Double.

Here is some sample code that will take 2 Optional Strings, try to convert them to Doubles, and multiples them.

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)

That outputs

246.912

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文