ในระหว่างกระบวนการพัฒนาเรามักจะพบรูปแบบที่จำเป็นต้องปรับเช่นการรักษาทศนิยมสองตำแหน่งหลังจากจุดทศนิยม ฯลฯ วิธีการนี้ค่อนข้างธรรมดาโปรดทราบต่อไปนี้
คนแรกคือการใช้คณิตศาสตร์รอบ
var Original = 28.453
1) // รอบ "ต้นฉบับ" ถึงสองทศนิยม
var result = math.round (ต้นฉบับ*100)/100; // ส่งคืน 28.45
2) // รอบ "ต้นฉบับ" ถึง 1 ทศนิยม
var result = math.round (ต้นฉบับ*10)/10; // ส่งคืน 28.5
ประเภทที่สอง js1.5 หรือสูงกว่าสามารถใช้ tofixed (x) เพื่อระบุจำนวนเพื่อสกัดกั้นตำแหน่ง x หลังจากจุดทศนิยม
3) // รอบ "ต้นฉบับ" ถึงสองทศนิยม
var result = Original.tofixed (2); // ส่งคืน 28.45
4) // รอบ "ต้นฉบับ" ถึง 1 ทศนิยม
var result = Original.tofixed (1); // ส่งคืน 28.5
สองวิธีข้างต้นเป็นวิธีที่พบได้บ่อยที่สุด แต่พวกเขาไม่สามารถปฏิบัติตามข้อกำหนดพิเศษบางอย่างได้ ตัวอย่างเช่นการรักษาทศนิยมสองตำแหน่งหลังจากจุดทศนิยม หากคุณมีตัวเลขน้อยกว่าสองหลักคุณจะทำขึ้นสำหรับศูนย์ ในเวลานี้มีวิธีที่สาม
ประเภทที่สามคือฟังก์ชั่นการแปลง รหัสนี้มาจากฟอรัมต่างประเทศ
การคัดลอกรหัสมีดังนี้:
ฟังก์ชั่น roundNumber (หมายเลข, ทศนิยม) {
var newstring; // หมายเลขมนโค้งใหม่
ทศนิยม = จำนวน (ทศนิยม);
ถ้า (ทศนิยม <1) {
NewString = (Math.Round (หมายเลข)). TOSTRING ();
} อื่น {
var numString = number.toString ();
if (numstring.lastindexof (".") == -1) {// ถ้าไม่มีจุดทศนิยม
numString += "."; // ให้มันในตอนท้าย
-
var cutoff = numstring.lastindexof (".") + ทศนิยม; // จุดที่จะตัดหมายเลข
var d1 = number (numstring.substring (cutoff, cutoff+1)); // ค่าของทศนิยมสุดท้ายที่เราจะจบลงด้วย
var d2 = number (numstring.substring (cutoff+1, cutoff+2)); // ทศนิยมถัดไปหลังจากอันสุดท้ายที่เราต้องการ
ถ้า (d2> = 5) {// เราจำเป็นต้องปัดเศษเลยหรือไม่? ถ้าไม่สตริงจะถูกตัดทอน
if (d1 == 9 && cutoff> 0) {// ถ้าตัวเลขสุดท้ายคือ 9 ให้ค้นหาจุดตัดใหม่
ในขณะที่ (cutoff> 0 && (d1 == 9 || isnan (d1))) {
ถ้า (d1! = ".") {
ตัดออก -= 1;
d1 = number (numstring.substring (cutoff, cutoff+1));
} อื่น {
ตัดออก -= 1;
-
-
-
d1 += 1;
-
ถ้า (d1 == 10) {
numString = numString.substring (0, numstring.lastindexof ("."));
var roundedNum = number (numString) + 1;
NewString = RoundedNum.toString () + '.';
} อื่น {
NewString = numString.substring (0, cutoff) + d1.toString ();
-
-
if (newstring.lastindexof (".") == -1) {// ทำสิ่งนี้อีกครั้งกับสตริงใหม่
Newstring += ".";
-
var decs = (newstring.substring (newstring.lastindexof (".")+1)). ความยาว;
สำหรับ (var i = 0; i <decimals-decs; i ++) newstring+= "0";
// var newNumber = number (newstring); // ทำให้เป็นตัวเลขถ้าคุณต้องการ
document.roundform.roundedfield.value = newstring; // ผลลัพธ์ผลลัพธ์ไปยังฟิลด์ฟอร์ม (เปลี่ยนเพื่อวัตถุประสงค์ของคุณ)
-
5) // รอบ "ต้นฉบับ" ถึงสองทศนิยม
var result = Original.tofixed (2); // ส่งคืน 28.45
6) // รอบ "ต้นฉบับ" ถึง 1 ทศนิยม
var result = Original.tofixed (1); // ส่งคืน 28.5
var Original = 28.4
var result = Original.tofixed (2); // ส่งคืน 28.40