При создании Триг функций 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),...
?