Bei der Erstellung trigonometrischen Funktionen my_sind(d), my_cosd(d), my_tand(d), dass ein gewisses Maß Argument , anstatt eine Radiant ein verwendet und genaue Antworten auf ein Vielfaches von 90 vorgesehen ist , bemerkte ich , dass das Ergebnis war manchmal -0.0nicht 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()und geben tan()typischerweise das gleiche Vorzeichen-Null-Ergebnis für eine gegebene Vorzeichen-Null-Eingabe zurück. Es ist sinnvoll, dass für diese Eingaben my_sin()übereinstimmen sollte sin().
my_sind( 0.0) alike sin( 0.0) --> 0.0
my_sind(-0.0) alike sin(-0.0) --> -0.0
Die Frage ist : für das, was ganze Zahl non_zero_nsollte / kann das Ergebnis je zurückkehren -0.0für my_sind(180*non_zero_n), my_cosd(180*n + 180), my_tand(180*non_zero_n)?
Es ist einfach genug zu codieren, also nur f(-0.0)produziert -0.0und damit fertig. Einfach fragen, ob es einen Grund gibt, eine andere f(x) Rendite -0.0für eine andere ( ungleich Null ) xzu erzielen, und wie wichtig es ist, dieses Zeichen zu versichern.
Hinweis: Dies ist keine Frage, warum 0.0vs. -0.0auftritt. Dies ist nicht der Grund, warum cos(machine_pi/4)nicht zurückkehrt 0.0. Dies ist auch keine Frage, wie die Erzeugung von 0.0oder gesteuert werden kann -0.0. Ich sehe es am besten als Designfrage.
sind(180), sind(-180), sind(360), sind(-360),...?