Nel creare funzioni trigonometriche my_sind(d)
, my_cosd(d)
, my_tand(d)
, quello utilizzato un argomento grado piuttosto che un radiante e fornito risposte esatte a multipli di 90, ho notato che il risultato era talvolta -0.0
piuttosto che 0.0
.
my_sind( 0.0) --> 0.0
my_sind(-0.0) --> -0.0
my_sind(180.0) --> -0.0
my_sind(360.0) --> 0.0
sin()
e in tan()
genere restituisce lo stesso risultato zero segno per un dato input zero segno. Ha senso che my_sin()
dovrebbe corrispondere sin()
per quegli input.
my_sind( 0.0) alike sin( 0.0) --> 0.0
my_sind(-0.0) alike sin(-0.0) --> -0.0
La domanda è : per quale numero intero non_zero_n
dovrebbe / potrebbe il risultato mai tornare -0.0
per my_sind(180*non_zero_n)
, my_cosd(180*n + 180)
, my_tand(180*non_zero_n)
?
È abbastanza facile da codificare, quindi f(-0.0)
produce solo -0.0
ed è fatto con esso. Semplice chiedersi se c'è qualche motivo per fare altro f(x)
ritorno -0.0
per qualsiasi altro ( diverso da zero ) x
e l'importanza di assicurare quel segno.
Nota: questa non è una domanda sul perché si verifica 0.0
vs. -0.0
Questo non è il motivo per cui cos(machine_pi/4)
non ritorna 0.0
. Né questa è una domanda su come controllare la generazione di 0.0
o -0.0
. Lo vedo meglio come una domanda di design.
sind(180), sind(-180), sind(360), sind(-360),...
?