Saya baru mengenal JavaScript dan baru saja menemukan toFixed()
dan toPrecision()
membulatkan angka. Namun, saya tidak tahu apa perbedaan antara keduanya.
Apa perbedaan antara number.toFixed()
dan number.toPrecision()
?
sumber
Saya baru mengenal JavaScript dan baru saja menemukan toFixed()
dan toPrecision()
membulatkan angka. Namun, saya tidak tahu apa perbedaan antara keduanya.
Apa perbedaan antara number.toFixed()
dan number.toPrecision()
?
toFixed(n)
memberikan n
panjang setelah koma desimal; toPrecision(x)
memberikan x
panjang total.
Ref di w3schools: toFixed dan toPrecision
EDIT :
Saya belajar beberapa waktu yang lalu bahwa w3schools bukanlah sumber terbaik, tapi saya lupa tentang jawaban ini sampai saya melihat komentar kzh, eh, "antusias". Berikut adalah referensi tambahan dari Mozilla Doc Center untuktoFixed()
dan untuktoPrecision()
. Untungnya bagi kita semua, MDC dan w3sekolah setuju satu sama lain dalam kasus ini.
Untuk kelengkapan, saya harus menyebutkan bahwa toFixed()
setara dengan toFixed(0)
dan toPrecision()
hanya mengembalikan nomor asli tanpa pemformatan.
toPrecision(x)
tidak "memberikanx
panjang total", itu memformat ke sejumlah digit signifikan yang diberikan. Misalnya,0.0000022.toPrecision(1)
akan kembali0.000002
.toPrecision(x)
memberikanx
panjang total." tidak selalu berlaku. Contoh penghitung:0.00001234.toPrecision(3)
Saya percaya bahwa yang pertama memberi Anda sejumlah tempat desimal tetap, sedangkan yang terakhir memberi Anda sejumlah digit signifikan yang tetap.
Selain itu,
toPrecision
akan menghasilkan notasi ilmiah jika terdapat lebih banyak digit bilangan bulat dalam bilangan tersebut daripada presisi yang ditentukan.EDIT: Oh, dan jika Anda baru mengenal JavaScript, saya sangat merekomendasikan buku " JavaScript: The Good Parts " oleh Douglas Crockford.
sumber
Contoh berbicara dengan jelas:
sumber
Saya pikir ini paling baik dijawab dengan sebuah contoh.
Katakanlah Anda memiliki data berikut:
Anda ingin menampilkan setiap produk ini dengan judul dan harga yang diformat. Mari coba gunakan
toPrecision
dulu:Terlihat bagus, jadi Anda mungkin berpikir ini juga akan berhasil untuk produk lain:
Tidak begitu baik. Kita dapat memperbaikinya dengan mengubah jumlah digit signifikan untuk setiap produk, tetapi jika kita mengulangi rangkaian produk, itu bisa rumit. Mari kita gunakan
toFixed
sebagai gantinya:Ini menghasilkan apa yang Anda harapkan. Tidak perlu menebak, dan tidak ada pembulatan.
sumber
Hanya:
sumber
Dalam keadaan tertentu,
toPrecision()
akan mengembalikan notasi eksponensial, sedangkantoFixed()
tidak akan.sumber
toExponential()
merupakan fungsi tersendiri .a = 999999999999999934464;
,a.toFixed(0)
kembali"1e+21"
. Mungkin jawaban yang lebih akurat adalah bahwa toFixed () tidak mengembalikan notasi eksponensial kecuali toString () melakukannya.Sebagai contoh, kita menganggap variabel a sebagai, var a = 123.45 a.toPrecision (6) Outputnya 123.450 a.toFixed (6) Outputnya seperti 123.450000 // 6 digit setelah koma desimal
sumber
Keduanya
toPrecision()
dantoFixed()
merupakan fungsi yang dirancang untuk memformat angka sebelum dicetak. Jadi, keduanya mengembalikanString
nilai.Ada satu pengecualian. Jika Anda menggunakan fungsi ini pada literal Angka negatif , karena prioritas operator, Angka dikembalikan. Artinya,
toFixed()
atautoPrecision()
akan mengembalikan string terlebih dahulu, lalu-
operator minus akan mengubah string kembali menjadi Angka sebagai nilai negatif. Silakan lihat di bawah untuk contoh.toPrecision()
mengembalikanString
mewakili objek Angka dalam titik tetap atau notasi eksponensial dibulatkan ke digit signifikan. Jadi jika Anda menetapkan bahwa Anda menginginkan presisi 1, ia mengembalikan angka signifikan pertama bersama dengan notasi ilmiah untuk menunjukkan pangkat 10 atau 0 sebelumnya sebelum titik desimalnya jika bilangan signifikannya <0.toFixed()
mengembalikanString
mewakili objek Angka dalam notasi titik tetap, dibulatkan. Fungsi ini hanya peduli pada angka koma desimalSaya sebutkan di atas pengecualian di mana menggunakan fungsi-fungsi ini pada literal Angka negatif akan mengembalikan Angka dan bukan String karena prioritas operator. Berikut beberapa contohnya:
Fakta menyenangkan: ada angka nol yang ditandatangani dilihat dari
-0.0456.toFixed(1)
Lihat: Apakah +0 dan -0 sama?
sumber