Rumah >hujung hadapan web >tutorial js >Mengapa JavaScript Menghasilkan Keputusan Titik Terapung yang Tidak Tepat, dan Bagaimana Saya Boleh Membaikinya?

Mengapa JavaScript Menghasilkan Keputusan Titik Terapung yang Tidak Tepat, dan Bagaimana Saya Boleh Membaikinya?

Susan Sarandon
Susan Sarandonasal
2024-12-25 03:18:09975semak imbas

Why Does JavaScript Produce Inaccurate Floating-Point Results, and How Can I Fix Them?

Ketepatan Nombor Titik Terapung dalam JavaScript

Apabila berurusan dengan nombor titik terapung dalam JavaScript, anda mungkin menghadapi masalah ketepatan. Ini jelas dalam contoh berikut:

function test() {
  var x = 0.1 * 0.2;
  document.write(x);
}
test();

Kod ini sepatutnya mengeluarkan 0.02, tetapi sebaliknya ia mencetak 0.020000000000000004. Percanggahan ini berpunca daripada ralat dalam ketepatan pendaraban titik terapung.

Untuk menyelesaikan isu ini, pertimbangkan nasihat berikut daripada Panduan Titik Terapung:

1. Gunakan Jenis Data Perpuluhan Khusus:

Jika pengiraan perpuluhan yang tepat adalah penting, terutamanya dalam aplikasi kewangan, pertimbangkan untuk menggunakan jenis data perpuluhan tertentu.

2. Format untuk Paparan:

Jika isu itu hanyalah dengan titik perpuluhan yang tidak diingini, formatkan hasil anda dan bundarkan kepada bilangan tempat perpuluhan yang dikehendaki semasa paparan.

3. Bekerja dengan Integer:

Dalam kes di mana jenis data perpuluhan tidak tersedia, gunakan integer sebaliknya. Sebagai contoh, lakukan pengiraan kewangan dalam sen berbanding dolar. Walau bagaimanapun, pendekatan ini adalah lebih intensif buruh dan mempunyai kelemahannya.

4. Gunakan Perpustakaan JavaScript:

Jika isu berterusan, pertimbangkan untuk menggunakan perpustakaan JavaScript seperti BigDecimal untuk JavaScript atau DecimalJS, yang menyediakan penyelesaian yang cekap untuk pengiraan perpuluhan yang tepat dan pengendalian nombor titik terapung tanpa ralat.

Atas ialah kandungan terperinci Mengapa JavaScript Menghasilkan Keputusan Titik Terapung yang Tidak Tepat, dan Bagaimana Saya Boleh Membaikinya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn