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

È stato utile?

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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top