Differenze tra le versioni di "Sin"
Da Gambas-it.org - Wikipedia.
(Creata pagina con "La funzione '''Sin()''': valore = Sin ( angolo As Float ) calcola il ''seno'' di un angolo. Il risultato è compreso in un ambito tra -1 e 1. <BR>Il parametro ''angolo'' deve...") |
|||
(4 versioni intermedie di uno stesso utente non sono mostrate) | |||
Riga 1: | Riga 1: | ||
La funzione '''Sin()''': | La funzione '''Sin()''': | ||
− | + | Sin ( angolo As Float ) As Float | |
calcola il ''seno'' di un angolo. Il risultato è compreso in un ambito tra -1 e 1. | calcola il ''seno'' di un angolo. Il risultato è compreso in un ambito tra -1 e 1. | ||
<BR>Il parametro ''angolo'' deve essere specificato in "<SPAN Style="text-decoration:underline">radianti</span>". | <BR>Il parametro ''angolo'' deve essere specificato in "<SPAN Style="text-decoration:underline">radianti</span>". | ||
+ | |||
+ | |||
=Note= | =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°: | * 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<FONT Size=5>'''-'''</font>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()": | ||
Riga 15: | Riga 17: | ||
oppure: | oppure: | ||
parametro = 1000000 | parametro = 1000000 | ||
− | seno = (Int( | + | seno = (Int(parametro * Sin(Rad(180.0))) / parametro |
avendo cura di adattare il valore contenuto dalla variabile "parametro" per correggere la precisione nel calcolo. | avendo cura di adattare il valore contenuto dalla variabile "parametro" per correggere la precisione nel calcolo. |
Versione attuale delle 23:57, 29 apr 2023
La funzione Sin():
Sin ( angolo As Float ) 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.