Selama proses pengembangan, kita sering menghadapi format yang perlu disesuaikan, seperti mempertahankan dua tempat desimal setelah titik desimal, dll. Metode ini juga cukup umum, harap dicatat yang berikut ini.
Yang pertama adalah menggunakan matematika
var asli = 28.453
1) // bulat "asli" menjadi dua desimal
var result = math.round (asli*100)/100; // pengembalian 28,45
2) // bulat "asli" hingga 1 desimal
var result = math.round (asli*10)/10; // pengembalian 28.5
Tipe kedua, JS1.5 atau di atas dapat menggunakan tofixed (x) untuk menentukan angka untuk mencegat posisi x setelah titik desimal.
3) // bulat "asli" menjadi dua desimal
var result = original.tofixed (2); // pengembalian 28,45
4) // bulat "asli" hingga 1 desimal
var result = original.tofixed (1); // pengembalian 28.5
Dua metode di atas adalah yang paling umum, tetapi mereka tidak dapat memenuhi persyaratan khusus tertentu. Misalnya, menjaga kedua tempat desimal setelah titik desimal. Jika Anda kurang dari dua digit, Anda akan menebus nol. Saat ini, ada metode ketiga.
Tipe ketiga adalah fungsi konversi. Kode ini berasal dari forum asing.
Salinan kode adalah sebagai berikut:
function roundnumber (number, desimals) {
var Newstring; // nomor bulat baru
desimal = angka (desimal);
if (desimal <1) {
newstring = (math.round (angka)). ToString ();
} kalau tidak {
var numString = number.toString ();
if (numString.LastIndexof (".") == -1) {// Jika tidak ada titik desimal
numstring += "."; // berikan satu di akhir
}
var cutoff = numString.LastIndexOf (".") + Decimals; // titik untuk memotong angka
var d1 = angka (numString.substring (cutoff, cutoff+1)); // nilai tempat desimal terakhir yang akan kita lakukan
var d2 = angka (numString.substring (cutoff+1, cutoff+2)); // desimal berikutnya, setelah yang terakhir yang kita inginkan
if (d2> = 5) {// Apakah kita perlu mengumpulkan sama sekali? Jika tidak, string hanya akan terpotong
if (d1 == 9 && cutoff> 0) {// Jika digit terakhir adalah 9, temukan titik cutoff baru
while (cutoff> 0 && (d1 == 9 || isnan (d1))) {
if (d1! = ".") {
cutoff -= 1;
d1 = angka (numString.substring (cutoff, cutoff+1));
} kalau tidak {
cutoff -= 1;
}
}
}
d1 += 1;
}
if (d1 == 10) {
numString = numString.subString (0, numString.LastIndexOf ("."));
var roundednum = angka (numString) + 1;
newstring = roundednum.tostring () + '.';
} kalau tidak {
newstring = numString.substring (0, cutoff) + d1.tostring ();
}
}
if (newstring.lastIndexof (".") == -1) {// Lakukan ini lagi, ke string baru
Newstring += ".";
}
var decs = (newstring.substring (newstring.lastIndexOf (".")+1)). Panjang;
untuk (var i = 0; i <decimals-decs; i ++) newstring+= "0";
// var newnumber = number (newstring); // jadikan nomor jika Anda suka
document.roundform.roundedfield.value = newstring; // keluarkan hasilnya ke bidang formulir (ubah untuk tujuan Anda)
}
5) // bulat "asli" menjadi dua desimal
var result = original.tofixed (2); // pengembalian 28,45
6) // bulat "asli" hingga 1 desimal
var result = original.tofixed (1); // pengembalian 28.5
var asli = 28.4
var result = original.tofixed (2); // pengembalian 28,40