При створенні Тріг функцій my_sind(d)
, my_cosd(d)
, my_tand(d)
, що використовували градусний аргумент , а не радіан один і давав точні відповіді на кратні 90, я помітив , що результат був іноді -0.0
замість 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()
і, tan()
як правило, повертають один і той же знак нульового результату для заданого знаку нульового вводу. my_sin()
Має сенс, що має відповідати sin()
цим входам.
my_sind( 0.0) alike sin( 0.0) --> 0.0
my_sind(-0.0) alike sin(-0.0) --> -0.0
Питання полягає в тому : для того, що ціле число non_zero_n
повинне / може результат коли - або повертатися -0.0
до my_sind(180*non_zero_n)
, my_cosd(180*n + 180)
, my_tand(180*non_zero_n)
?
Легко досить коду , щоб тільки f(-0.0)
виробляє -0.0
і зробити з неї. Просте цікаво, чи є якась причина зробити інше f(x)
повернення -0.0
за будь-яке інше ( не нульове ) x
та важливість страхування цього знака.
Примітка. Це не питання про те, чому відбувається 0.0
проти -0.0
. Це не чому cos(machine_pi/4)
не повертається 0.0
. Це також не питання про те, як контролювати генерацію 0.0
або -0.0
. Я найкраще бачу це питання дизайну.
sind(180), sind(-180), sind(360), sind(-360),...
?