در این مطلب میخوام نحوه فرمت دهی اعداد مانند دلار و ... رو در 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
برای مطالعه بیشتر این روش میتونید این لینک رو ببینید.
اگر شما هم روشی برای انجام اینکار به ذهنتون میرسه خوشحال میشیم که در بخش نظرات با ما در میان بذارید.
اولین دیدگاه این پست رو تو بنویس !