如何在 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
}