Dalam pengaturcaraan harian, kami sering menggunakan pelbagai bahasa pengaturcaraanuntuk mengendalikan pelbagai operasi berangka, antaranya JavaScript sudah pasti yang paling banyak digunakan. Walau bagaimanapun, apabila berurusan dengan pengiraan berangka yang kompleks dalam beberapa kes yang melampau, kita mungkin menghadapi situasi di mana keputusan operasi kehilangan ketepatan. Jadi mengapa ini berlaku? Bagaimana untuk mengelakkan kehilangan ketepatan pengiraan?
console.log(0.1 + 0.2); // 0.30000000000000004
Oleh kerana perduaan tidak boleh mewakili 0.1 dan 0.2 dengan tepat, hasil penambahannya adalah tidak tepat dalam JavaScript, dengan digit tambahan selepas titik perpuluhan muncul.
2.1 Gunakan integer untuk pengiraan
Apabila melakukan operasi yang kompleks, kita boleh menukar perpuluhan kepada integer untuk pengiraan, dan akhirnya menukar keputusan kepada perpuluhan. Sebagai contoh, kod berikut boleh mendarab 0.1 dan 0.2 dengan 10, menambah keputusan dan akhirnya membahagikan hasilnya dengan 10:
console.log((0.1 * 10 + 0.2 * 10) / 10); // 0.3
2.2 Gunakan fungsi toFixed()
dalam JavaScript The Number type menyediakan kaedah toFixed(), yang boleh menukar nombor kepada perpuluhan dengan ketepatan tertentu (bilangan tempat perpuluhan yang diletakkan dalam kurungan dikekalkan). Sebagai contoh, dalam kod berikut, fungsi toFixed() akan mengekalkan dua tempat perpuluhan dan akhirnya memperoleh nombor titik terapung dengan ketepatan 0.30.
console.log((0.1 + 0.2).toFixed(2)); // 0.30
2.3 Ketepatan Dikembangkan
Ketepatan operasi dalam JavaScript boleh dikembangkan untuk mengelakkan kehilangan ketepatan. Pendekatan biasa ialah menukar perpuluhan kepada integer dan kemudian melakukan pengiraan. Pilihan lain ialah menggunakan perpustakaan BigNumber dalam JavaScript Pustaka ini menyediakan jenis berangka berketepatan tinggi, yang boleh meningkatkan ketepatan operasi. Contohnya, kod berikut boleh menggunakan perpustakaan BigNumber untuk menyelesaikan masalah kehilangan ketepatan operasi:
var BigNumber = require('bignumber.js'); var x = new BigNumber("0.1"); var y = new BigNumber("0.2"); console.log(x.plus(y).toString()); // "0.3"
Artikel ini meringkaskan sebab kehilangan ketepatan operasi dalam JavaScript dan kaedah pengelakan biasa. Apabila berurusan dengan pengiraan berangka yang kompleks, kita perlu menganalisis masalah tertentu dengan teliti, menggunakan kaedah yang sesuai untuk mengelakkan kehilangan ketepatan, dan memastikan ketepatan program.
Atas ialah kandungan terperinci Apakah yang berlaku apabila operasi JavaScript kehilangan ketepatan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!