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.0
em 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_n
deve / pode o resultado nunca voltar -0.0
para 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.0
e termina com ele. Simplesmente me pergunto se existe algum motivo para fazer outro f(x)
retorno -0.0
para outro ( diferente de zero ) x
e a importância de garantir esse sinal.
Nota: Esta não é uma questão de por que 0.0
vs. -0.0
ocorre. 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.0
ou -0.0
. Eu vejo isso melhor como uma questão de design.
sind(180), sind(-180), sind(360), sind(-360),...
?