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