আমার প্রয়োজন মেটাতে আমি এখানে @ নভেলিজেটরের উত্তরে অনেক প্রসারিত করার সিদ্ধান্ত নিয়েছি। আমি বাহ্যিক লাইব্রেরি ছাড়াই আমার বেশিরভাগ ফর্ম্যাটিংয়ের প্রয়োজনগুলি পরিচালনা করতে নমনীয় ফাংশন চেয়েছিলাম।
বৈশিষ্ট্য
- অর্ডার প্রত্যয় (কে, এম, ইত্যাদি) ব্যবহারের বিকল্প
- অর্ডার প্রত্যয় ব্যবহারের জন্য কাস্টম তালিকা নির্দিষ্ট করার বিকল্প
- সর্বনিম্ন এবং সর্বাধিক অর্ডার সীমাবদ্ধ করার বিকল্প
- দশমিক স্থানের সংখ্যা নিয়ন্ত্রণ করুন
- স্বয়ংক্রিয় ক্রম-বিভাজনকারী কমা
- Percentচ্ছিক শতাংশ বা ডলার বিন্যাস
- সংখ্যাযুক্ত ইনপুট ক্ষেত্রে কী ফিরে আসবে তা নিয়ন্ত্রণ করুন
- নেতিবাচক এবং অসীম সংখ্যার উপর কাজ করে
উদাহরণ
let x = 1234567.8;
formatNumber(x); // '1,234,568'
formatNumber(x, {useOrderSuffix: true}); // '1M'
formatNumber(x, {useOrderSuffix: true, decimals: 3, maxOrder: 1}); // '1,234.568k'
formatNumber(x, {decimals: 2, style: '$'}); // '$1,234,567.80'
x = 10.615;
formatNumber(x, {style: '%'}); // '1,062%'
formatNumber(x, {useOrderSuffix: true, decimals: 1, style: '%'}); // '1.1k%'
formatNumber(x, {useOrderSuffix: true, decimals: 5, style: '%', minOrder: 2}); // '0.00106M%'
formatNumber(-Infinity); // '-∞'
formatNumber(NaN); // ''
formatNumber(NaN, {valueIfNaN: NaN}); // NaN
ক্রিয়া
/*
* Return the given number as a formatted string. The default format is a plain
* integer with thousands-separator commas. The optional parameters facilitate
* other formats:
* - decimals = the number of decimals places to round to and show
* - valueIfNaN = the value to show for non-numeric input
* - style
* - '%': multiplies by 100 and appends a percent symbol
* - '$': prepends a dollar sign
* - useOrderSuffix = whether to use suffixes like k for 1,000, etc.
* - orderSuffixes = the list of suffixes to use
* - minOrder and maxOrder allow the order to be constrained. Examples:
* - minOrder = 1 means the k suffix should be used for numbers < 1,000
* - maxOrder = 1 means the k suffix should be used for numbers >= 1,000,000
*/
function formatNumber(number, {
decimals = 0,
valueIfNaN = '',
style = '',
useOrderSuffix = false,
orderSuffixes = ['', 'k', 'M', 'B', 'T'],
minOrder = 0,
maxOrder = Infinity
} = {}) {
let x = parseFloat(number);
if (isNaN(x))
return valueIfNaN;
if (style === '%')
x *= 100.0;
let order;
if (!isFinite(x) || !useOrderSuffix)
order = 0;
else if (minOrder === maxOrder)
order = minOrder;
else {
const unboundedOrder = Math.floor(Math.log10(Math.abs(x)) / 3);
order = Math.max(
0,
minOrder,
Math.min(unboundedOrder, maxOrder, orderSuffixes.length - 1)
);
}
const orderSuffix = orderSuffixes[order];
if (order !== 0)
x /= Math.pow(10, order * 3);
return (style === '$' ? '$' : '') +
x.toLocaleString(
'en-US',
{
style: 'decimal',
minimumFractionDigits: decimals,
maximumFractionDigits: decimals
}
) +
orderSuffix +
(style === '%' ? '%' : '');
}
M
এবংG
?