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
相关产品推荐
相关产品推荐

