我正在尝试将此 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 相同)?
非常感谢您的帮助!
最佳答案
看看这个答案:VB.NET vs C# integer division
VB.NET 有两个除法运算符:
- “/”除法:结果会四舍五入
- “\”整数除法:结果将被 chop
在您的脚本使用“/”的情况下,结果将为 1(1/2 = 0.5 四舍五入为 1)。
你的 JavaScript
Math.cos(Theta[0.5])
应该变成
Math.cos(Theta[Math.round(0.5)])
关于javascript - vb.net整数除法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14193308/