如何在 Swift 中使用 return 0 而不是 Nan?
How to return 0 instead of Nan in Swift?
let need = (Singleton.shared.getTotalExpense(category: .need) / Singleton.shared.getTotalIncome()) * 100
needsLabel.text = "" + String(format: "%.f%%", need)
如果总支出和总收入均为零,我不希望返回 NaN。如果需要 = Nan,我怎样才能做到这一点,它 returns 0
您需要有条件地检查分子和分母是否都为零,这是导致 NaN
并有条件地将零分配给结果的原因之一。
let expenses = Singleton.shared.getTotalExpense(category: .need)
let income = Singleton.shared.getTotalIncome()
let need = expenses == 0 && income == 0 ? 0.0 : expenses / income * 100
您还可以检查除法的结果是否为 NaN
(如果任何操作数为 NaN
):
let ratio = expenses / income * 100
let need = ratio.isNaN ? 0.0 : ratio
请注意,您可能还需要处理将非零值除以零的情况 - 这将导致 Inf
- 这完全取决于您的用例:
if ratio.isInfinite {
// do something else, like throw an exception
}
let need = (Singleton.shared.getTotalExpense(category: .need) / Singleton.shared.getTotalIncome()) * 100
needsLabel.text = "" + String(format: "%.f%%", need)
如果总支出和总收入均为零,我不希望返回 NaN。如果需要 = Nan,我怎样才能做到这一点,它 returns 0
您需要有条件地检查分子和分母是否都为零,这是导致 NaN
并有条件地将零分配给结果的原因之一。
let expenses = Singleton.shared.getTotalExpense(category: .need)
let income = Singleton.shared.getTotalIncome()
let need = expenses == 0 && income == 0 ? 0.0 : expenses / income * 100
您还可以检查除法的结果是否为 NaN
(如果任何操作数为 NaN
):
let ratio = expenses / income * 100
let need = ratio.isNaN ? 0.0 : ratio
请注意,您可能还需要处理将非零值除以零的情况 - 这将导致 Inf
- 这完全取决于您的用例:
if ratio.isInfinite {
// do something else, like throw an exception
}