Bagaimana tipe floating -point di JS?
Misalnya: var a = 0,69;
Saya ingin mendapatkan 6.9 secara langsung untuk menulis var c = a*10;
Peringatan (c);
Saat Anda mencari online, beberapa netizen mengatakan bahwa ini adalah bug perhitungan JS mengapung -poin, dan menemukan solusi:
Metode 1: Fungsi Kustom JS
Salin kode kode sebagai berikut:
<script>
// Tambahkan metode untuk mendapatkan hasil tambahan yang akurat
// Deskripsi: Hasil JavaScript akan memiliki kesalahan, dan akan lebih jelas ketika dua angka floating -point ditambahkan. Fungsi ini mengembalikan hasil penambahan yang lebih akurat.
// Call: Accidd (arg1, arg2)
// nilai pengembalian: arg1 plus hasil yang tepat dari arg2
Fungsi acadd (arg1, arg2) {{
var r1, r2, m;
coba {r1 = arg1.toString ().
coba {r2 = arg2.toString ().
M = Math.pow (10, Math.max (R1, R2)))
Return (arg1*m+arg2*m)/m
}
// Tambahkan metode Tambah ke Jenis Nomor, yang lebih nyaman untuk dihubungi.
Number.prototype.add = function (arg) {
Return acadd (arg, this);
}
// Tambahkan metode untuk mendapatkan hasil tambahan yang akurat
// Deskripsi: Hasil JavaScript akan memiliki kesalahan, dan akan lebih jelas ketika dua angka floating -point ditambahkan. Fungsi ini mengembalikan hasil penambahan yang lebih akurat.
// Call: Accidd (arg1, arg2)
// nilai pengembalian: arg1 plus hasil yang tepat dari arg2
Fungsi accsub (arg1, arg2) {{
var r1, r2, m, n;
coba {r1 = arg1.toString ().
coba {r2 = arg2.toString ().
M = Math.pow (10, Math.max (R1, R2));
// Terakhir Modifikasi oleh Deeka
// panjang akurasi kontrol dinamis
n = (r1> = r2)?
Return ((arg1*m-rg2*m)/m) .tofixed (n);
}
// Kecuali metode untuk mendapatkan metode yang tepat untuk menghapus metode ini
// Deskripsi: Hasil JavaScript akan memiliki kesalahan, dan akan jelas ketika dua angka floating -point dihapus. Fungsi ini mengembalikan hasil penghapusan yang lebih akurat.
// PANGGIL: ACCDIV (ARG1, ARG2)
// nilai pengembalian: arg1 kecuali hasil yang akurat dari arg2
Fungsi accdiv (arg1, arg2) {{
var t1 = 0, t2 = 0, r1, r2;
coba {t1 = arg1.toString ().
coba {t2 = arg2.toString ().
dengan (matematika) {
R1 = angka (arg1.toString (). Ganti (".", ""))
r2 = angka (arg2.tostring (). ganti (".", ""))
Return (r1/r2)*pow (10, t2-t1);
}
}
// Tambahkan metode div ke jenis angka, yang lebih nyaman untuk dihubungi.
Number.prototype.div = function (arg) {
Return accdiv (this, arg);
}
// fungsi multiplikasi untuk mendapatkan hasil perkalian yang akurat
// Deskripsi: Hasil dari hasil perkalian JavaScript akan memiliki kesalahan, dan akan jelas ketika dua angka poin mengambang dikalikan. Fungsi ini mengembalikan hasil perkalian yang lebih akurat.
// PANGGIL: ACCMUL (ARG1, ARG2)
// nilai pengembalian: arg1 dikalikan dengan hasil yang akurat Arg2
Fungsi accmul (arg1, arg2)
{{
varm m = 0, s1 = arg1.toString (), s2 = arg2.toString ();
Coba {m+= s1.split (".") [1] .length} catch (e) {}
Coba {m+= s2.split (".") [1] .length} catch (e) {}
Return Number (S1.Replace (".", "")*Number (s2.replace (".", "") /Math.pow (10, m)
}
// Tambahkan metode MUL ke jenis angka, yang lebih nyaman untuk dihubungi.
Number.prototype.mul = function (arg) {
Return accmul (arg, this);
}
var a = 0,69;
var b = 10;
Peringatan (A*B); // 6.8999999999995
peringatan ((a*100)/10);
</script>
Panggil saja fungsi secara langsung.
Metode 2: Jika Anda tahu jumlah digit desimal, Anda dapat mempertimbangkan untuk membosankan jumlah nomor poin mengambang ke integer (akhirnya membagi banyak yang sesuai), dan kemudian melakukan operasi operasi.
Peringatan (11*22.9);
Peringatan (11*(22.9*10)/10); // Dapatkan 251.9