Swift属性显示”inf”情况
Swift属性显示”inf”情况

Swift属性显示”inf”情况

在调试“汇率仓库”App时,发现显示的金额变成了”inf”,查询了一下代码好像也没有这个赋值。

后来了解到inf表示无穷大。可能的报错代码为calculaterReserveAmount 方法中出现了除以零的情况。

// 计算汇率仓库的储备金额
func calculaterReserveAmount() {
    // 重新将汇率仓库的储备金额置空,并尝试重新计算
    ExchangeRateWarehouseAmount = 0.0
    // 轮询常用货币中的各值
    for (keys,value) in ExchangeRateWarehousconvertedAmounts {
        // 当输入的金额为空时,不进行计算,并将汇率仓库的金额改为空
        ExchangeRateWarehouseAmount += value / (ExchangeRateStructInfo.exchangeRates[keys]?.baseRate ?? 0.0)
    }
}

在这段代码中出现了除以零的情况:

ExchangeRateWarehouseAmount += value / (ExchangeRateStructInfo.exchangeRates[keys]?.baseRate ?? 0.0)

当baseRate为0.0时,除以零的操作就会导致结果为无穷大。

解决方案为:

if let baseRate = ExchangeRateStructInfo.exchangeRates[keys]?.baseRate, baseRate > 0 {
    print("\(value)\(keys)等于\(value) / \(baseRate)")
    ExchangeRateWarehouseAmount += value / baseRate
} else {
    print("\(keys)的baseRate无效(为0或找不到),跳过此项计算")
}

对该字典进行解包,如果该币种的汇率小于等于0,就跳过,不进行计算。

如果您认为这篇文章给您带来了帮助,您可以在此通过支付宝或者微信打赏网站开放者。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注