เพิ่มเครื่องหมายจุลภาค(,)ให้กับตัวเลข


เทคนิคเกี่ยวกับวิธีเพิ่มเครื่องหมายจุลภาค(,)ให้กับตัวเลขใน Javascript คุณมีโครงการที่ต้องแสดง "ตัวเลขให้ดูดี" หรือไม่?

วิธีง่ายๆ ในการเพิ่มเครื่องหมายจุลภาคให้กับตัวเลขใน Javascript คือ:
  • ใช้ฟังก์ชัน toLocaleString()

     var num = 1234567.89
     var commas =  num.toLocaleString ("en-US")
console.log(num.toLocaleString("en-US")); // 1,234,567.89
console.log(num.toLocaleString("fr-FR")); // 1 234 567,89
console.log(num.toLocaleString("ja-JP", { style: "currency", currency: "JPY" }));
  • แปลงตัวเลขเป็นสตริง และใช้นิพจน์ทั่วไปแทนที่
         var commas  = num.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",")
console.log(commas); // 1,234,567.89
  • แทรกเครื่องหมายจุลภาคด้วยตนเอง
// (A) ADD COMMAS TO SEPERATE GIVEN NUMBER
// num : original number
// per : add comma per n digits (default 3)
// places : number of decimal places (default 2)
function addComma (num, per, places) {
  // (A1) SET DEFAULTS
  if (per==undefined) { per = 3; }
  if (places==undefined) { places = 2; }

  // (A2) NO DECIMAL PLACES - ROUND OFF
  // REMOVE THIS IF YOU DON'T WANT TO ROUND OFF
  if (places==0) { num = Math.round(num); }
 
  // (A3) SPLIT WHOLE & DECIMAL NUMBERS
  var cString = num.toString(),
      cDot = cString.indexOf("."),
      cWhole = "", cDec = "";
  if (cDot == -1) {
    cWhole = cString;
    cDec = 0;
  } else {
    cWhole = cString.substring(0, cDot);
    cDec = cString.substring(cDot+1);
  }
 
  // (A4) ADD COMMAS TO WHOLE NUMBER
  var aComma = "", count = 0;
  if (cWhole.length > per) { for (let i=(cWhole.length-1); i>=0; i--) {
    aComma = cWhole.charAt(i) + aComma;
    count++;
    if (count == per && i!=0) {
      aComma = "," + aComma; 
      count = 0;
    }
  }} else { aComma = cWhole; }
 
  // (A5) ROUND OFF TO GIVEN DECIMAL PLACES
  if (places==0) { cDec = ""; }
  else {
    cDec = +("0." + cDec);
    cDec = cDec.toFixed(places).toString().substring(1);
  }
 
  // (A6) RETURN "WHOLE WITH COMMA" PLUS DECIMAL PLACES
  return aComma + cDec;
}
 
// (B) TEST
// (B1) WHOLE NUMBER
var whole = 123456789;
console.log(addComma(whole)); // 123,456,789.00
console.log(addComma(whole, 4, 0)); // 1,2345,6789

// (B2) DECIMAL
var dec = 23456.78;
console.log(addComma(dec)); // 23,456.78
console.log(addComma(dec, 2, 0)); // 2,34,57
แสดงความคิดเห็น (0)
ใหม่กว่า เก่ากว่า