我目前正在将一个程序从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)
值
我的X(Z, 1)
值使用了"-5.08864764726704"
QBasic的结果是:323.9964
VB.Net的结果是:323.5636369944437
我做错什么了吗?
感谢
我怀疑您遇到了QBasic的老式16位限制。
早在恐龙在地球上行走的时候,人们在QBasic中使用单精度浮点数学,他们知道这个变量只能存储7个有效数字。
因此,如果你的QBasic数据类型是单身,那么无论你相信你输入了什么,在QBasic中,它们实际上都是:
PI = 3.141592
X(Z, 2) = 6.892910
X(Z, 1) = -5.088647
我刚刚了解到我的计算没有问题。结果不同的原因只是因为Visual Basic更精确,所以我的计算更准确。
非常感谢你的回答!