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,但结果不同。以下是一些信息:

PI = 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 数据类型是单数,那么无论您认为自己输入了什么,在 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 回答