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.0bukan 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_nharus / mungkin hasilnya pernah kembali -0.0untuk 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.0dan 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.0x
Catatan: Ini bukan pertanyaan mengapa 0.0vs -0.0terjadi. Ini bukan mengapa cos(machine_pi/4)tidak kembali 0.0. Ini juga bukan pertanyaan tentang bagaimana mengendalikan generasi 0.0atau -0.0. Saya melihatnya sebagai pertanyaan desain.
sind(180), sind(-180), sind(360), sind(-360),...?