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

C/C++背景开发者在.cshtml中编写JavaScript数学运算遇类型错误

问题根因与修复方案

核心错误原因

  • JS 语法中不存在double、float等强类型声明关键字,所有数值统一为Number 类型(底层为64位双精度浮点数,精度和C/C++的double基本一致),主动写double声明变量会直接触发语法错误。
  • 你当前传入的d/m/s/c参数均为字符串类型,+运算符默认优先执行字符串拼接而非数学加法,才会出现多个数值直接拼接成超长字符串的异常结果。
  • 代码中的if判断存在语法错误:逻辑或||的左右判断条件没有整体包裹在if的括号内,会触发运行时异常。
  • JS 没有ToDouble()内置方法,类型转换直接用Number()或者parseFloat()即可。

修复后代码

function DmsToDeg(d, m, s, c, h) {
    // 先把所有数值入参转换为Number类型,避免字符串拼接
    const numD = Number(d)
    const numM = Number(m)
    const numS = Number(s)
    const numC = Number(c)
    let t = numD + (numM / 60.0) + (numS / 3600) + (numC / 360000)
    // 修正if判断的括号语法
    if (h.toString() === 'S' || h.toString() === 'W') {
        t = -t
    }
    return t
}

验证结果

传入参数35, 44, 20, 27, 'S'调用函数,返回结果为-35.73896388888889,符合预期运算结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 16:24:03