Na criação de funções trigonométricas my_sind(d), my_cosd(d), my_tand(d), que usou um argumento grau em vez de um radiano e forneceu respostas exatas em múltiplos de 90, eu notei que o resultado foi, por vezes, -0.0em vez 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()e tan()geralmente retornam o mesmo resultado de zero de sinal para uma determinada entrada de zero de sinal. Faz sentido que my_sin()corresponda sin()a essas entradas.
my_sind( 0.0) alike sin( 0.0) --> 0.0
my_sind(-0.0) alike sin(-0.0) --> -0.0
A questão é : por que número inteiro non_zero_ndeve / pode o resultado nunca voltar -0.0para my_sind(180*non_zero_n), my_cosd(180*n + 180), my_tand(180*non_zero_n)?
É fácil codificar, portanto, apenas f(-0.0)produz -0.0e termina com ele. Simplesmente me pergunto se existe algum motivo para fazer outro f(x) retorno -0.0para outro ( diferente de zero ) xe a importância de garantir esse sinal.
Nota: Esta não é uma questão de por que 0.0vs. -0.0ocorre. Não é por isso cos(machine_pi/4)que não retorna 0.0. Nem isso é uma questão de como controlar a geração de 0.0ou -0.0. Eu vejo isso melhor como uma questão de design.
sind(180), sind(-180), sind(360), sind(-360),...?