При створенні Тріг функцій 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),...?