Dengan perkembangan berterusan teknologi komputer moden, bahasa JavaScript telah digunakan secara meluas dalam aplikasi rangkaian. Walau bagaimanapun, dalam pengiraan JavaScript, ketidaktepatan pengiraan mungkin berlaku. Ini mungkin berkaitan dengan cara unik JavaScript mengendalikan nombor, atau ia mungkin berkaitan dengan faktor lain seperti perkakasan atau penyemak imbas. Artikel ini akan meneroka punca pengiraan JavaScript yang tidak tepat dari pelbagai sudut dan memperkenalkan beberapa langkah balas.
1. Kaedah pemprosesan nombor dalam JavaScript
Dalam JavaScript, nombor diproses menggunakan piawaian IEEE-754. Piawaian ini menggunakan binari untuk mewakili perpuluhan dan integer, dan menggunakan tahap ketepatan tertentu untuk memastikan ketepatan hasil pengiraan. Secara khusus, piawaian menetapkan bahawa nombor titik terapung disimpan dalam binari 64-bit, dengan 1 bit digunakan untuk mewakili tanda, 11 bit digunakan untuk mewakili eksponen, dan 52 bit digunakan untuk mewakili mantissa. Oleh kerana perwakilan perduaan nombor titik terapung tidak boleh mewakili pecahan perpuluhan tertentu dengan ketepatan yang lengkap, ralat pembundaran boleh berlaku semasa melakukan pengiraan dalam JavaScript, mengakibatkan pengiraan tidak tepat.
Sebagai contoh, apabila dua nombor titik terapung ditambah, ini mungkin berlaku:
0.1 + 0.2 === 0.30000000000000004
Seperti yang anda lihat, hasil pengiraan di atas adalah berbeza daripada hasil yang dijangkakan Ini kerana dalam JavaScript , dua nombor perpuluhan 0.1 dan 0.2 tidak boleh diwakili dengan tepat sebagai nombor perduaan. Oleh itu, apabila melakukan operasi tambah, ralat pembundaran mungkin berlaku, mengakibatkan keputusan pengiraan tidak tepat.
2. Faktor seperti perkakasan dan penyemak imbas
Selain kaedah pemprosesan nombor JavaScript, terdapat beberapa faktor lain yang mungkin juga menyebabkan pengiraan JavaScript tidak tepat. Satu faktor penting ialah perkakasan. Pemproses sistem komputer moden semuanya berdasarkan seni bina set arahan, dan seni bina yang berbeza mungkin juga mempunyai perbezaan dalam pemprosesan ketepatan dan kaedah pembundaran. Oleh itu, keputusan yang berbeza mungkin berlaku semasa menjalankan operasi titik terapung. Di samping itu, mungkin terdapat perbezaan antara penyemak imbas yang berbeza, yang boleh menjejaskan hasil pengiraan JavaScript.
3. Tindakan balas
Untuk menangani isu pengiraan JavaScript yang tidak tepat, terdapat langkah balas berikut.
Memandangkan pengiraan integer dalam JavaScript adalah tepat, anda boleh cuba menukar nombor titik terapung kepada integer untuk pengiraan bagi mengelakkan situasi pengiraan yang tidak tepat. Sebagai contoh, anda boleh mendarabkan nilai wang dengan 100, menukar perpuluhan kepada integer untuk pengiraan, dan akhirnya membahagikan dengan 100 untuk mendapatkan hasil yang betul.
Selain JavaScript asli, anda juga boleh menggunakan perpustakaan pihak ketiga untuk melaksanakan pengiraan matematik. Contohnya, Math.js ialah perpustakaan pengiraan matematik popular yang menyokong pengiraan ketepatan tinggi dan menyediakan pelbagai fungsi pengiraan matematik yang boleh mengendalikan masalah matematik yang kompleks.
Apabila melakukan pengiraan berangka, anda boleh menggunakan fungsi toFixed() terbina dalam untuk memformat nombor bagi mengelakkan ralat pembundaran. Fungsi ini boleh memformat nombor menjadi perpuluhan dengan panjang yang ditentukan. Contohnya:
(0.1 + 0.2).toFixed(2) === "0.30"
Di atas ialah contoh menggunakan fungsi toFixed() untuk memformatkan hasil pengiraan kepada dua tempat perpuluhan.
Ringkasnya, ketidaktepatan dalam pengiraan JavaScript mungkin berkaitan dengan faktor seperti kaedah pemprosesan nombor, perkakasan dan penyemak imbas. Untuk mengelakkan pengiraan yang tidak tepat, kaedah di atas boleh digunakan untuk melakukan pengiraan matematik.
Atas ialah kandungan terperinci Pengiraan JavaScript tidak tepat. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!