2013-01-07 50 views
1

我想将这个ASP.net(VB)脚本转换为纯Javascript,我遇到了这个问题。我将这个脚本有以下几点:vb.net整数部门

[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] 

然后一些数学计算完成,里面的:1 2θ的以下值结束:

Dim F as Integer 
Dim Theta(100) as Double 

f控制值结束公式西塔阵列使用像这样:

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

[这](http://en.wikibooks.org/wiki/Visual_Basic_.NET/Arithmetic_operators#Division)应该回答你的问题: '/'是浮动除法,'\'是整数除法。 (不能使反斜杠漂亮>。)因此,'1/2'是'0.5'。 – Amadan

+0

你的引用不会显示如果你做了什么会发生什么:Dim x as Integer,然后做了浮点除法:x = 3/4 - 问题不是如何声明结果变量。在我的问题中,F是一个整数,F/2用作数组索引。 vb如何可以有十进制数组索引? – SublymeRick

+0

你说得对,它没有。正如我所说,这个部门会继续进行但由于数组索引必须是整数,所以它会变成四舍五入的,所以'0'。5'成为'1'作为索引。 – Amadan

回答

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)])