ios - 如何在 Swift 中返回 0 而不是 Nan?
问题描述
let need = (Singleton.shared.getTotalExpense(category: .need) / Singleton.shared.getTotalIncome()) * 100
needsLabel.text = "" + String(format: "%.f%%", need)
如果总费用和总收入都为零,我不希望返回 NaN。如果需要= Nan,我该怎么做,它返回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
}
推荐阅读
- mysql - MySQL在列表中但不在临时表中
- xml - 将 xmlns 属性添加到根元素
- c# - 后台录音不起作用 C# UWP
- autocad - AutoCAD 如何计算仅由拟合点定义的样条曲线的端切线?
- r - 尝试在 R 中应用函数时,为什么我得到“二进制运算符的非数字参数”
- javascript - 从 gatsby 的 drupal 检索数据时连接超时
- c# - RDLC 报告查看器表达式返回 #ERROR 和 IIF 表达式
- javascript - javascript 日期对象是否与 python 日期时间对象兼容
- python - 在 python 中为 selenium 识别的搜索输入项元素的位置
- apache-kafka - Kafka - 哪个值将被视为最终值