Differenze tra le versioni di "Sin"

Da Gambas-it.org - Wikipedia.
Riga 9: Riga 9:
 
* Va fatto rilevare che in alcuni casi il risultato mostrato può sembrare diverso da quello che si aspetta, come nel caso del risultato del calcolo del seno dell'angolo di 180°:
 
* Va fatto rilevare che in alcuni casi il risultato mostrato può sembrare diverso da quello che si aspetta, come nel caso del risultato del calcolo del seno dell'angolo di 180°:
 
  Print Sin(Rad(180.0))
 
  Print Sin(Rad(180.0))
nel qual caso si ottiene il seguente valore <Font Color=brown>1.22464679914735E-16</font> anziché 0.
+
nel qual caso si ottiene il seguente valore <Font Color=brown>1.22464679914735E'''-'''16</font> anziché 0.
 
<BR>Ciò è causato da un errore di arrotondamento, dovuto alla precisione NON infinita del processore matematico. Infatti piccoli errori si verificano con la precisione limitata dei numeri in virgola mobile IEEE754.  
 
<BR>Ciò è causato da un errore di arrotondamento, dovuto alla precisione NON infinita del processore matematico. Infatti piccoli errori si verificano con la precisione limitata dei numeri in virgola mobile IEEE754.  
<BR>E' comunque da notare che 1.2246E-16 = 0.00000000000000012246 è sostanzialmente prossima allo zero assoluto.
+
<BR>E' comunque da notare che 1.2246E'''-'''16 = 0.00000000000000012246 è sostanzialmente prossima allo zero assoluto.
  
 
Per risolvere il problema si può utilizzare la funzione "Round()":
 
Per risolvere il problema si può utilizzare la funzione "Round()":

Versione delle 19:26, 16 dic 2021

La funzione Sin():

valore = Sin ( angolo As Float )

calcola il seno di un angolo. Il risultato è compreso in un ambito tra -1 e 1.
Il parametro angolo deve essere specificato in "radianti".


Note

  • Va fatto rilevare che in alcuni casi il risultato mostrato può sembrare diverso da quello che si aspetta, come nel caso del risultato del calcolo del seno dell'angolo di 180°:
Print Sin(Rad(180.0))

nel qual caso si ottiene il seguente valore 1.22464679914735E-16 anziché 0.
Ciò è causato da un errore di arrotondamento, dovuto alla precisione NON infinita del processore matematico. Infatti piccoli errori si verificano con la precisione limitata dei numeri in virgola mobile IEEE754.
E' comunque da notare che 1.2246E-16 = 0.00000000000000012246 è sostanzialmente prossima allo zero assoluto.

Per risolvere il problema si può utilizzare la funzione "Round()":

Print Round(Sin(Rad(180.0)))

oppure:

parametro = 1000000
seno = (Int(parametro * Sin(Rad(180.0))) / parametro

avendo cura di adattare il valore contenuto dalla variabile "parametro" per correggere la precisione nel calcolo.