1

この 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 と同じ)?

助けていただければ幸いです。

4

1 に答える 1

2

この回答をご覧ください: VB.NET と C# の整数除算

VB.NET には除算用の 2 つの演算子があります。

  • "/" 除算: 結果は丸められます
  • "\" 整数除算: 結果は切り捨てられます

スクリプトで「/」を使用する場合、結果は 1 になります (1 / 2 = 0.5 を 1 に丸めます)。

あなたの JavaScript

Math.cos(Theta[0.5])

なるべき

Math.cos(Theta[Math.round(0.5)])
于 2013-01-07T10:08:19.123 に答える