3

現在、プログラムを QBasic から VB.Net に変換しています。次のコード行があります。

RSA = 270 + 180 / PI * (ATN(ABS(X(Z, 2) / X(Z, 1))))

と訳しました

RSA = 270 + 180 / PI * (Math.Atan(Math.Abs(arrayX(z - 1, 2 - 1) / arrayX(z - 1, 1 - 1))))

VB.Netの場合ですが、結果は異なります。ここにいくつかの情報があります:

円周率 = 3.141592654

そして、私のテストでは、値に
6.8929106501697825」 を使用し、X(Z, 2)値に「 -5.08864764726704 」を使用しました
X(Z, 1)

QBasic の結果: 323.9964 VB.Net
の結果: 323.5636369944437

私は何か間違ったことをしましたか?

ありがとう

4

2 に答える 2

3

QBasic の旧式の 16 ビット制限に遭遇していると思われます。

恐竜が地球を歩き回り、人々が QBasic で単精度浮動小数点演算を使用していたとき、彼らは変数が 7 つの有効数字しか格納できないことを知っていました。

したがって、QBasic のデータ型が single の場合、何を入力したと信じていても、QBasic では実際には次のようになります。

PI = 3.141592
X(Z, 2) = 6.892910
X(Z, 1) = -5.088647
于 2012-02-22T11:53:05.370 に答える
2

自分の計算に問題がないことを学びました。結果が異なる理由は、Visual Basic の方が正確であるため、私の計算がより正確だからです。

答えてくれてありがとう!

于 2012-02-24T00:10:46.013 に答える