我目前正在将程序从 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
我做错了什么吗?
谢谢
最佳答案
我怀疑您遇到了 QBasic 的老式 16 位限制。
很久以前,当恐龙在地球上行走时,人们在 QBasic 中使用单精度 float 学,他们知道该变量只能存储 7 位有效数字。
因此,如果您的 QBasic 数据类型是单数,那么无论您认为输入了什么,在 QBasic 中它们实际上都是:
PI = 3.141592
X(Z, 2) = 6.892910
X(Z, 1) = -5.088647
关于vb.net - ATN 从 QBasic 到 VB.Net,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9388113/