آموزش نحوه فرمت دهی به اعداد

دسته بندی: آموزش
زمان مطالعه: 2 دقیقه
۱۳ تیر ۱۳۹۷

آموزش نحوه فرمت دهی به اعداددر این مطلب می‌خوام نحوه فرمت دهی اعداد مانند دلار و ... رو در Javascript بهتون آموزش بدم. فرض کنید که یک عدد اعشاری رو به عنوان قیمت در ورودی داریم و می‌خوایم اون رو تا تعداد اعشار دلخواه روند کنیم و علاوه بر اون قسمت صحیح رقم رو سه تا سه تا از هم جدا کنیم و در کنار اون واحد پول دلخواهمون رو قرار بدیم.

در صورتی که عدد 2489.8237 رو داشته باشیم و بخوایم اون رو تا 3 ، 2 یا 7 رقم اعشار روند کنیم می‌تونیم از کد زیر استفاده کنیم:

var profits=2489.8237
profits.toFixed(3) //returns 2489.824 (round up)
profits.toFixed(2) //returns 2489.82
profits.toFixed(7) //returns 2489.8237000 (padding)

در مرحله بعد به کمک کد زیر می‌تونید به قیمت، واحد پول دلخواهتون مانند $ رو اضافه کنید و قسمت صحیح قیمت رو با علامت ','   سه رقم سه رقم جدا کنید:

Number.prototype.formatMoney = function(c, d, t){
  var n = this,
  c = isNaN(c = Math.abs(c)) ? 2 : c, 
  d = d == undefined ? "." : d, 
  t = t == undefined ? "," : t, 
  s = n < 0 ? "-" : "", 
  i = String(parseInt(n = Math.abs(Number(n) || 0).toFixed(c))), 
  j = (j = i.length) > 3 ? j % 3 : 0;

  return s + (j ? i.substr(0, j) + t : "") + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + t) + (c ? d + Math.abs(n - i).toFixed(c).slice(2) : "");
};

از کدی که بالا قرار داده شده می‌تونید به صورت زیر استفاده کنید:

(123456789.12345).formatMoney(2, '.', ',');

در کد بالا حتی اگر از نوشتن آرگومان '.'  و  ',' صرف نظر کنیم باز هم '.'  و  ',' به صورت پیش فرض به قیمت اعمال خواهد شد.

(123456789.12345).formatMoney(2);

روش دوم روشی خلاصه شده هست که میتونه تمامی انتظارات فوق رو برای شما برآورده کنه و همه جا می‌تونید ازش استفاده کنید:

(12345.67).toFixed(2).replace(/\d(?=(\d{3})+\.)/g, '$&,');  // 12,345.67

روش سوم، روشی مدرن هست که فقط در مرورگرهای مدرن کاربرد داره:

new Intl.NumberFormat().format(12345.67);  // 12,345.67 new Intl.NumberFormat('en', {  style: 'currency',  currency: 'USD'}).format(12345.67);  // $12,345.67

برای مطالعه بیشتر این روش می‌تونید این لینک رو ببینید.

اگر شما هم روشی برای انجام اینکار به ذهنتون میرسه خوشحال میشیم که در بخش نظرات با ما در میان بذارید.

چه امتیازی به این مقاله می دید؟
نویسنده محمد اسفندیاری
بسیار به طراحی وب علاقمندم و به سرعت در حال یادگیری تمام مباحث پیشرفته هستم و دوست دارم که به دیگران هم یاد بدهم.

نظرات کاربران

اولین دیدگاه این پست رو تو بنویس !

ارسال دیدگاه
خوشحال میشیم دیدگاه و یا تجربیات خودتون رو با ما در میون بذارید :