You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Swift中如何处理NaN值?三角函数计算height返回NaN问题

Swift计算cos表达式得到NaN的解决方案

NaN即非数值(Not a Number),是非法数值运算的输出结果,你遇到的问题可以按以下步骤排查解决:

  • 第一步:校验theta的取值合法性
    theta本身为NaN、无穷大时,cos运算后结果仍为NaN,可在运算前加合法校验:
    // 保证theta是合法有限值再执行运算
    guard theta.isFinite else {
        // 此处补充theta非法时的兜底逻辑,比如赋值默认角度值
        return
    }
    
    同时排查theta的上游生成逻辑:如果theta来自字符串转数值、负数求平方根、0除以0等操作,先修复上游逻辑,保证生成的theta是有效有限值。
  • 第二步:校验theta的单位是否匹配函数要求
    Swift内置的cos(_:)函数入参要求为弧度值,如果你传入的theta是角度值,需要先做单位转换再运算:
    // 角度转弧度
    let radianTheta = theta * .pi / 180
    height = 147 - (88 * cos(radianTheta))
    
  • 第三步:处理可选类型的theta
    如果theta是可选数值类型(Double?/Float?),禁止直接强制解包,使用安全解包逻辑获取有效值:
    guard let validTheta = theta, validTheta.isFinite else {
        // 可选值为nil或数值非法时的兜底逻辑
        return
    }
    height = 147 - (88 * cos(validTheta))
    

如果需要快速兜底避免业务逻辑受NaN影响,可以在运算后加默认值 fallback:

height = 147 - (88 * cos(theta))
// 结果为NaN时替换为业务默认值
if height.isNaN {
    height = 0
}

内容的提问来源于stack exchange,提问作者sanjay shiva

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 11:18:04