【问题标题】:vb.net integer divisionvb.net 整数除法
【发布时间】:2012-12-21 00:37:59
【问题描述】:

我正在尝试将此 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 相同)?

非常感谢您的帮助!

【问题讨论】:

  • This 应该回答您的问题:/ 是浮点除法,` \ ` 是整数除法。 (不能使反斜杠漂亮 >.1 / 2 是 0.5
  • 您的参考资料没有显示如果您这样做会发生什么:将 x 调暗为整数,然后进行浮点除法:x = 3/4 - 另外问题不在于如何声明结果变量。在我的问题中 F 是一个整数,而 F / 2 用作数组索引。 vb怎么会有十进制数组索引?
  • 你是对的,它没有。正如我所说,分裂继续进行;但由于数组索引必须是整数,它会被四舍五入,所以0.5变成1作为索引。

标签: javascript asp.net vb.net


【解决方案1】:

看看这个答案: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)])

【讨论】:

    猜你喜欢
    • 2011-08-26
    • 2022-01-18
    • 1970-01-01
    • 1970-01-01
    • 2011-07-03
    • 2013-05-25
    • 2018-07-20
    相关资源
    最近更新 更多