Saya perlu putaran misalnya 6.688689
untuk 6.7
, tapi selalu menunjukkan saya 7
.
Metode saya:
Math.round(6.688689);
//or
Math.round(6.688689, 1);
//or
Math.round(6.688689, 2);
Tetapi hasilnya selalu sama 7
... Apa yang saya lakukan salah?
javascript
rounding
Vitalii Ponomar
sumber
sumber
(6.688689).toFixed(1);
.toFixed
mengembalikan sebuah string. Pastikan untuk memasukkan hasilnyaNumber()
. Lihat jawaban yang diterima, dan lainnya.Jawaban:
sumber
Number((456.1235).toFixed(3)) -> 456.123
,Number((1.235).toFixed(2)) -> 1.24
... JavaSript Bodoh ...sumber
Math.round(1.005*100)/100
contoh dari MDN1.005 * 100 = 100.49999999999999
(setidaknya di mesin JS yang saya coba). Itu sebabnya itu tidak bekerja dan mengapa Anda tidak boleh mengandalkan float menjadi sangat akurat.Gunakan
toFixed()
fungsi.sumber
Pembaruan (2019-10). Berkat kode Reece Daniels di bawah ini sekarang tersedia sebagai satu set fungsi yang dikemas dalam paket npm-paket yang diharapkan (lihat).
Anda dapat menggunakan fungsi pembantu dari contoh MDN . Daripada Anda akan memiliki lebih banyak fleksibilitas:
Pembaruan (2019-01-15). Sepertinya dokumen MDN tidak lagi memiliki fungsi pembantu ini. Berikut cadangan dengan contoh:
Contoh penggunaan:
sumber
Sebuah
Number
objek dalam JavaScript memiliki metode yang tidak persis apa yang Anda butuhkan. Metode itu adalahNumber.toPrecision([precision])
.Sama seperti
.toFixed(1)
itu mengubah hasil menjadi string, dan perlu dikonversi kembali menjadi angka. Selesai menggunakan+
awalan di sini.patokan sederhana di laptop saya:
sumber
1e-10.toPrecision(3)
: "1.00e-10" - ini putaran ke angka yang signifikan .Jika Anda tidak hanya ingin menggunakan
toFixed()
tetapi jugaceil()
danfloor()
pada pelampung maka Anda dapat menggunakan fungsi berikut:Menghasilkan:
UPD:
Cara lain yang mungkin adalah ini:
Menghasilkan:
sumber
Fungsi putaran saya yang diperluas:
Contoh Output:
sumber
Lihat di bawah
var original = 28.59;
var result=Math.round(original*10)/10
akan mengembalikan Anda kembali28.6
Semoga ini yang kamu mau ..
sumber
sumber
Saya pikir fungsi ini dapat membantu.
sumber
Saya pikir fungsi di bawah ini dapat membantu
penggunaan:
roundOff(600.23458,2);
akan kembali600.23
sumber
jika Anda berada di bawah konteks node.js, Anda dapat mencoba mathjs
sumber
Ada alternatif .toLocaleString () untuk memformat angka, dengan banyak pilihan mengenai lokal, pengelompokan, pembentukan mata uang, notasi. Beberapa contoh:
Bulat ke 1 desimal, kembalikan float:
Membulatkan menjadi 2 desimal, memformat sebagai mata uang dengan simbol yang ditentukan, menggunakan pengelompokan koma untuk ribuan:
Format sebagai mata uang lokal :
Bulat ke minimum 3 desimal, paksa angka nol untuk ditampilkan:
Persen gaya untuk rasio. Masukan * 100 dengan tanda%
sumber
sumber
Saya punya solusi yang sangat baik jika toFixed () tidak berfungsi.
Contoh
sumber
Jika Anda menggunakan Browserify hari ini, Anda harus mencoba: roundTo lib NPM yang sangat berguna
sumber
Tweak kecil untuk jawaban ini :
sumber
roundToStep(1.015, 0.001)