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.0zamiast 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_npowinien / może wynikiem kiedykolwiek powrócić -0.0do 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.0i wykonuje się je. Po prostu zastanawiasz się, czy jest jakiś powód, aby dokonać innego f(x) zwrotu -0.0za jakikolwiek inny ( niezerowy ) xi znaczenie ubezpieczenia tego znaku.
Uwaga: To nie jest pytanie, dlaczego występuje 0.0vs. -0.0Nie dlatego cos(machine_pi/4)nie wraca 0.0. Nie jest to również pytanie, jak kontrolować generowanie 0.0lub -0.0. Uważam to najlepiej za pytanie projektowe.
sind(180), sind(-180), sind(360), sind(-360),...?