我正在尝试将此ASP.net(vb)脚本转换为纯Javascript,我遇到了这个问题。我正在转换的脚本有以下内容:
Dim F as Integer
Dim Theta(100) as Double
F最终得到的值为:1 Theta最终得到以下值:
[0, 1.2669233316773538, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
然后进行了一些数学计算,在公式中使用Theta数组,如下所示:
Cos(Theta(F / 2))
在这里做一个简单的数学运算,F / 2, (or 1 / 2) = 0.5
没有数组键0.5所以在我的Javascript代码中就像说:
Math.cos(Theta[0.5])
最终会这样做:
Math.cos(undefined)
这当然打破了数学。
我的问题很简单。我没有IIS服务器或任何方法来修改vb.net脚本,以便我可以添加调试输出以查看其工作原理。我基本上是盲目的,对任何.net语言和ASP都知之甚少。
由于F是一个整数,在vb.net脚本中除以F会产生一个整数吗?是否由于F的类型而强制进行舍入?
比如,在这个脚本中,哪一个正在发生?:Theta [0](连接)或Theta [1](舍入)或Theta [0.5](与javascript相同)?
非常感谢帮助!
答案 0 :(得分:2)
看一下这个答案:VB.NET vs C# integer division
VB.NET有两个分部操作员:
在您的情况下,当您的脚本使用“/”时,结果将为1(1/2 = 0.5舍入为1)。
您的JavaScript
Math.cos(Theta[0.5])
应该成为
Math.cos(Theta[Math.round(0.5)])