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.0piuttosto 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_ndovrebbe / potrebbe il risultato mai tornare -0.0per 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.0ed è fatto con esso. Semplice chiedersi se c'è qualche motivo per fare altro f(x) ritorno -0.0per qualsiasi altro ( diverso da zero ) xe l'importanza di assicurare quel segno.
Nota: questa non è una domanda sul perché si verifica 0.0vs. -0.0Questo non è il motivo per cui cos(machine_pi/4)non ritorna 0.0. Né questa è una domanda su come controllare la generazione di 0.0o -0.0. Lo vedo meglio come una domanda di design.
sind(180), sind(-180), sind(360), sind(-360),...?