Pertama -tama tulis demo untuk mereproduksi masalah. Saya menggunakan lingkungan pengujian online JS [terbuka]
Tulis ulang fungsi displaynum ()
function displayNum () {var num = 22.77; waspada (num + 10);}Mengklik Tombol Tampilkan Hasil Tampilkan 32.769999999996 n Desimal Muncul.
Tidak semua angka akan memiliki fenomena ini, kecuali untuk 22,99 2.777, tampaknya angka -angka ini tidak istimewa.
Saya memeriksa beberapa informasi. Salah satunya adalah bug dalam perhitungan titik mengambang JS, dan yang lainnya terkait dengan konversi akhir komputer menjadi perhitungan biner. Namun, mengapa tidak semua desimal memiliki fenomena ini? Saya tidak tahu saat ini. Saya akan masuk lebih dalam jika saya punya waktu.
Ada dua solusi sekarang. Yang pertama adalah menggunakan metode JS .tofixed (n) untuk secara langsung mendapatkan desimal N digit. Saya pribadi berpikir metode ini akan memiliki beberapa masalah dalam akurasi data. Jika persyaratan akurasi data tidak tinggi, Anda dapat menggunakannya. Metode kedua adalah menulis metode operasi JS Anda sendiri.
Berikut ini adalah fungsi penambahan khusus. Menambahkan metode ini akan menghindari masalah di atas.
fungsi addnum (num1, num2) {var sq1, sq2, m; coba {sq1 = num1.toString (). split (".") [1] .length;} catch (e) {sq1 = 0;} coba {sq2 = num2.tostring (). split ("." catch (e) {sq2 = 0;} m = math.pow (10, math.max (sq1, sq2)); return (num1 * m + num2 * m) / m;}Tentu saja, itu juga dapat ditulis sebagai waspada ((num * 3+10 * 3) /3); Dengan cara ini, tidak akan ada lagi desimal di n.
peringatan ((num * 3+10 * 3) /3); dan peringatan (num+10); berbeda dari peringatan (num+10); Dua cara menulis komputer ini untuk dikonversi ke operasi biner di lapisan bawah. Mungkin ini adalah alasan untuk masalah di atas.
Artikel di atas pada desimal JS menghitung titik desimal dan menampilkan beberapa desimal adalah semua konten yang saya bagikan dengan Anda. Saya harap Anda dapat memberi Anda referensi dan saya harap Anda dapat mendukung wulin.com lebih lanjut.