En la creación de funciones trigonométricas my_sind(d), my_cosd(d), my_tand(d), que utiliza un argumento grado más que un un radián y proporcionan respuestas exactas a múltiplos de 90, me di cuenta de que el resultado era a veces -0.0en lugar de 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()y tan()normalmente devuelve el mismo resultado de signo cero para una entrada de signo cero dada. Tiene sentido que my_sin()coincida sin()con esas entradas.
my_sind( 0.0) alike sin( 0.0) --> 0.0
my_sind(-0.0) alike sin(-0.0) --> -0.0
La pregunta es : ¿para qué número entero non_zero_ndebe / puede devolver el resultado nunca -0.0para my_sind(180*non_zero_n), my_cosd(180*n + 180), my_tand(180*non_zero_n)?
Es bastante fácil de codificar, por lo que solo f(-0.0)produce -0.0y termina con él. Simplemente preguntándome si hay alguna razón para hacer otro f(x) retorno -0.0por otro ( distinto de cero ) xy la importancia de asegurar ese signo.
Nota: Esta no es una cuestión de por qué ocurre 0.0vs. -0.0Esto no es por qué cos(machine_pi/4)no regresa 0.0. Tampoco se trata de cómo controlar la generación de 0.0o -0.0. Lo veo mejor como una pregunta de diseño.
sind(180), sind(-180), sind(360), sind(-360),...?