ATN от QBasic к VB.Net - PullRequest
       15

ATN от QBasic к VB.Net

3 голосов
/ 22 февраля 2012

Я сейчас перевожу программу из 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

Я сделал что-то не так?

Спасибо

Ответы [ 2 ]

3 голосов
/ 22 февраля 2012

Я подозреваю, что вы сталкиваетесь со старомодным 16-битным ограничением QBasic.

Когда назад динозавры шли по земле, и люди использовали математику с плавающей запятой одинарной точности в QBasic, они знали, чтопеременная будет хранить только 7 значащих цифр.

Так что, если ваши типы данных QBasic являются одиночными, то независимо от того, что, по вашему мнению, вы ввели, в QBasic они фактически будут:

PI = 3.141592
X(Z, 2) = 6.892910
X(Z, 1) = -5.088647
2 голосов
/ 24 февраля 2012

Я только что понял, что в моих вычислениях нет проблем. Причина, по которой результат отличается, заключается в том, что Visual Basic более точен, а мои вычисления более точны.

Большое спасибо за ответы!

...