ATN da QBasic a VB.Net
-
28-10-2019 - |
Domanda
Attualmente sto traducendo un programma da QBasic a VB.Net e ho questa riga di codice:
RSA = 270 + 180 / PI * (ATN(ABS(X(Z, 2) / X(Z, 1))))
L'ho tradotto come
RSA = 270 + 180 / PI * (Math.Atan(Math.Abs(arrayX(z - 1, 2 - 1) / arrayX(z - 1, 1 - 1))))
per VB.Net ma i risultati sono diversi.Di seguito alcune informazioni:
PI= 3,141592654
E per il mio test
Ho utilizzato " 6.8929106501697825 " per il mio valore X(Z, 2)
Ho utilizzato " -5.08864764726704 " come valore X(Z, 1)
Il risultato per QBasic è: 323.9964
Il risultato per VB.Net è: 323.5636369944437
Ho fatto qualcosa di sbagliato?
Grazie
Soluzione 2
Ho appena capito che non ci sono problemi nel mio calcolo.Il motivo per cui il risultato è diverso è solo perché Visual Basic è più preciso, quindi il mio calcolo è solo più accurato.
Grazie mille per le risposte!
Altri suggerimenti
Sospetto che tu stia incappando in una limitazione antiquata a 16 bit di QBasic.
Ai tempi in cui i dinosauri camminavano sulla terra e le persone usavano la matematica in virgola mobile a precisione singola in QBasic, sapevano che la variabile avrebbe memorizzato solo 7 cifre significative.
Quindi, se i tuoi tipi di dati QBasic sono singoli, indipendentemente da ciò che credi di aver inserito, in QBasic saranno effettivamente:
PI = 3.141592
X(Z, 2) = 6.892910
X(Z, 1) = -5.088647