W tworzeniu funkcji parametrów wyzwalania my_sind(d)
, my_cosd(d)
, my_tand(d)
, że użył argumentu stopni zamiast radianie jedną i pod warunkiem dokładnych odpowiedzi na wielokrotność 90, zauważyłem, że wynik był czasami -0.0
zamiast 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()
i tan()
zazwyczaj zwraca ten sam wynik zero znaku dla danych wejściowych zero znaku. Ma to sens, że my_sin()
powinno pasować sin()
do tych danych wejściowych.
my_sind( 0.0) alike sin( 0.0) --> 0.0
my_sind(-0.0) alike sin(-0.0) --> -0.0
Pytanie brzmi : co cały numer non_zero_n
powinien / może wynikiem kiedykolwiek powrócić -0.0
do my_sind(180*non_zero_n)
, my_cosd(180*n + 180)
, my_tand(180*non_zero_n)
?
Kodowanie jest wystarczająco łatwe, więc f(-0.0)
produkuje się -0.0
i wykonuje się je. Po prostu zastanawiasz się, czy jest jakiś powód, aby dokonać innego f(x)
zwrotu -0.0
za jakikolwiek inny ( niezerowy ) x
i znaczenie ubezpieczenia tego znaku.
Uwaga: To nie jest pytanie, dlaczego występuje 0.0
vs. -0.0
Nie dlatego cos(machine_pi/4)
nie wraca 0.0
. Nie jest to również pytanie, jak kontrolować generowanie 0.0
lub -0.0
. Uważam to najlepiej za pytanie projektowe.
sind(180), sind(-180), sind(360), sind(-360),...
?