Dalam menciptakan fungsi trigonometri my_sind(d)
, my_cosd(d)
, my_tand(d)
, yang digunakan argumen gelar daripada satu radian dan memberikan jawaban yang tepat pada kelipatan 90, saya melihat bahwa hasilnya kadang-kadang -0.0
bukan 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()
dan tan()
biasanya mengembalikan hasil tanda nol yang sama untuk input tanda nol yang diberikan. Masuk akal bahwa my_sin()
harus cocok sin()
dengan input tersebut.
my_sind( 0.0) alike sin( 0.0) --> 0.0
my_sind(-0.0) alike sin(-0.0) --> -0.0
Pertanyaannya adalah : untuk apa seluruh nomor non_zero_n
harus / mungkin hasilnya pernah kembali -0.0
untuk my_sind(180*non_zero_n)
, my_cosd(180*n + 180)
, my_tand(180*non_zero_n)
?
Kode ini cukup mudah sehingga hanya f(-0.0)
menghasilkan -0.0
dan dilakukan dengan itu. Sederhana bertanya-tanya apakah ada alasan untuk membuat pengembalian lain untuk yang lain ( tidak nol ) dan pentingnya mengasuransikan tanda itu.f(x)
-0.0
x
Catatan: Ini bukan pertanyaan mengapa 0.0
vs -0.0
terjadi. Ini bukan mengapa cos(machine_pi/4)
tidak kembali 0.0
. Ini juga bukan pertanyaan tentang bagaimana mengendalikan generasi 0.0
atau -0.0
. Saya melihatnya sebagai pertanyaan desain.
sind(180), sind(-180), sind(360), sind(-360),...
?