Hướng dẫn format number to k and m javascript - số định dạng thành k và m javascript

272

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

Tôi cần hiển thị giá trị tiền tệ ở định dạng

function nFormatter(num) {
     if (num >= 1000000000) {
        return (num / 1000000000).toFixed(1).replace(/\.0$/, '') + 'G';
     }
     if (num >= 1000000) {
        return (num / 1000000).toFixed(1).replace(/\.0$/, '') + 'M';
     }
     if (num >= 1000) {
        return (num / 1000).toFixed(1).replace(/\.0$/, '') + 'K';
     }
     return num;
}
2 bằng một nghìn, hoặc
function nFormatter(num) {
     if (num >= 1000000000) {
        return (num / 1000000000).toFixed(1).replace(/\.0$/, '') + 'G';
     }
     if (num >= 1000000) {
        return (num / 1000000).toFixed(1).replace(/\.0$/, '') + 'M';
     }
     if (num >= 1000) {
        return (num / 1000).toFixed(1).replace(/\.0$/, '') + 'K';
     }
     return num;
}
3,
function nFormatter(num) {
     if (num >= 1000000000) {
        return (num / 1000000000).toFixed(1).replace(/\.0$/, '') + 'G';
     }
     if (num >= 1000000) {
        return (num / 1000000).toFixed(1).replace(/\.0$/, '') + 'M';
     }
     if (num >= 1000) {
        return (num / 1000).toFixed(1).replace(/\.0$/, '') + 'K';
     }
     return num;
}
4,
function nFormatter(num) {
     if (num >= 1000000000) {
        return (num / 1000000000).toFixed(1).replace(/\.0$/, '') + 'G';
     }
     if (num >= 1000000) {
        return (num / 1000000).toFixed(1).replace(/\.0$/, '') + 'M';
     }
     if (num >= 1000) {
        return (num / 1000).toFixed(1).replace(/\.0$/, '') + 'K';
     }
     return num;
}
5, v.v. Để định dạng số?

Hướng dẫn format number to k and m javascript - số định dạng thành k và m javascript

Penny Liu

Huy hiệu vàng 13K571 Huy hiệu bạc86 Huy hiệu đồng5 gold badges71 silver badges86 bronze badges

hỏi ngày 27 tháng 2 năm 2012 lúc 7:52Feb 27, 2012 at 7:52

Hướng dẫn format number to k and m javascript - số định dạng thành k và m javascript

4

Một phiên bản tổng quát hơn:

function nFormatter(num, digits) {
  const lookup = [
    { value: 1, symbol: "" },
    { value: 1e3, symbol: "k" },
    { value: 1e6, symbol: "M" },
    { value: 1e9, symbol: "G" },
    { value: 1e12, symbol: "T" },
    { value: 1e15, symbol: "P" },
    { value: 1e18, symbol: "E" }
  ];
  const rx = /\.0+$|(\.[0-9]*[1-9])0+$/;
  var item = lookup.slice().reverse().find(function(item) {
    return num >= item.value;
  });
  return item ? (num / item.value).toFixed(digits).replace(rx, "$1") + item.symbol : "0";
}

/*
 * Tests
 */
const tests = [
  { num: 0, digits: 1 },
  { num: 12, digits: 1 },
  { num: 1234, digits: 1 },
  { num: 100000000, digits: 1 },
  { num: 299792458, digits: 1 },
  { num: 759878, digits: 1 },
  { num: 759878, digits: 0 },
  { num: 123, digits: 1 },
  { num: 123.456, digits: 1 },
  { num: 123.456, digits: 2 },
  { num: 123.456, digits: 4 }
];
tests.forEach(function(test) {
  console.log("nFormatter(" + test.num + ", " + test.digits + ") = " + nFormatter(test.num, test.digits));
});

Đã trả lời ngày 27 tháng 2 năm 2012 lúc 9:03Feb 27, 2012 at 9:03

Hướng dẫn format number to k and m javascript - số định dạng thành k và m javascript

Salman Asalman aSalman A

253K80 Huy hiệu vàng423 Huy hiệu bạc513 Huy hiệu Đồng80 gold badges423 silver badges513 bronze badges

13

Có vẻ như điều này sẽ phù hợp với bạn:

function kFormatter(num) {
    return Math.abs(num) > 999 ? Math.sign(num)*((Math.abs(num)/1000).toFixed(1)) + 'k' : Math.sign(num)*Math.abs(num)
}
    
console.log(kFormatter(1200)); // 1.2k
console.log(kFormatter(-1200)); // -1.2k
console.log(kFormatter(900)); // 900
console.log(kFormatter(-900)); // -900

Hướng dẫn format number to k and m javascript - số định dạng thành k và m javascript

Đã trả lời ngày 27 tháng 2 năm 2012 lúc 7:56Feb 27, 2012 at 7:56

Jake Feaseljake FeaselJake Feasel

16,5K5 Huy hiệu vàng52 Huy hiệu bạc66 Huy hiệu Đồng5 gold badges52 silver badges66 bronze badges

8

Đây là một giải pháp đơn giản để tránh tất cả các tuyên bố

function nFormatter(num) {
     if (num >= 1000000000) {
        return (num / 1000000000).toFixed(1).replace(/\.0$/, '') + 'G';
     }
     if (num >= 1000000) {
        return (num / 1000000).toFixed(1).replace(/\.0$/, '') + 'M';
     }
     if (num >= 1000) {
        return (num / 1000).toFixed(1).replace(/\.0$/, '') + 'K';
     }
     return num;
}
9 (với sức mạnh của
const formatCash = n => {
  if (n < 1e3) return n;
  if (n >= 1e3) return +(n / 1e3).toFixed(1) + "K";
};

console.log(formatCash(2500));
0).

var SI_SYMBOL = ["", "k", "M", "G", "T", "P", "E"];

function abbreviateNumber(number){

    // what tier? (determines SI symbol)
    var tier = Math.log10(Math.abs(number)) / 3 | 0;

    // if zero, we don't need a suffix
    if(tier == 0) return number;

    // get suffix and determine scale
    var suffix = SI_SYMBOL[tier];
    var scale = Math.pow(10, tier * 3);

    // scale the number
    var scaled = number / scale;

    // format number and add suffix
    return scaled.toFixed(1) + suffix;
}

Tiền thưởng meme

const formatCash = n => {
  if (n < 1e3) return n;
  if (n >= 1e3) return +(n / 1e3).toFixed(1) + "K";
};

console.log(formatCash(2500));
1 đại diện cho cái gì?

Đã trả lời ngày 21 tháng 11 năm 2016 lúc 16:02Nov 21, 2016 at 16:02

Waylon Flinnwaylon FlinnWaylon Flinn

19.7K15 Huy hiệu vàng68 Huy hiệu bạc71 Huy hiệu đồng15 gold badges68 silver badges71 bronze badges

6

Cải thiện hơn nữa câu trả lời của Salman vì nó trả về NFormatter (33000) là 33,0k

function nFormatter(num) {
     if (num >= 1000000000) {
        return (num / 1000000000).toFixed(1).replace(/\.0$/, '') + 'G';
     }
     if (num >= 1000000) {
        return (num / 1000000).toFixed(1).replace(/\.0$/, '') + 'M';
     }
     if (num >= 1000) {
        return (num / 1000).toFixed(1).replace(/\.0$/, '') + 'K';
     }
     return num;
}

bây giờ nformatter (33000) = 33k

Đã trả lời ngày 21 tháng 2 năm 2013 lúc 4:59Feb 21, 2013 at 4:59

YashyashYash

2.0732 Huy hiệu vàng15 Huy hiệu bạc11 Huy hiệu đồng2 gold badges15 silver badges11 bronze badges

3

Một cách tiếp cận thẳng có khả năng đọc tốt nhất và sử dụng bộ nhớ nhỏ nhất. Không cần thiết kế quá mức với việc sử dụng regex, đối tượng bản đồ, đối tượng toán học, vòng lặp, v.v.

Định dạng giá trị tiền mặt với k

const formatCash = n => {
  if (n < 1e3) return n;
  if (n >= 1e3) return +(n / 1e3).toFixed(1) + "K";
};

console.log(formatCash(2500));

Định dạng giá trị tiền mặt với k m b t

const formatCash = n => {
  if (n < 1e3) return n;
  if (n >= 1e3 && n < 1e6) return +(n / 1e3).toFixed(1) + "K";
  if (n >= 1e6 && n < 1e9) return +(n / 1e6).toFixed(1) + "M";
  if (n >= 1e9 && n < 1e12) return +(n / 1e9).toFixed(1) + "B";
  if (n >= 1e12) return +(n / 1e12).toFixed(1) + "T";
};

console.log(formatCash(1235000));

Sử dụng số âm

let format;
const number = -1235000;

if (number < 0) {
  format = '-' + formatCash(-1 * number);
} else {
  format = formatCash(number);
}

Đã trả lời ngày 4 tháng 5 năm 2019 lúc 23:13May 4, 2019 at 23:13

Hướng dẫn format number to k and m javascript - số định dạng thành k và m javascript

tim-montaguetim-montaguetim-montague

14.6K4 Huy hiệu vàng56 Huy hiệu bạc45 Huy hiệu Đồng4 gold badges56 silver badges45 bronze badges

1

/**
 * Shorten number to thousands, millions, billions, etc.
 * http://en.wikipedia.org/wiki/Metric_prefix
 *
 * @param {number} num Number to shorten.
 * @param {number} [digits=0] The number of digits to appear after the decimal point.
 * @returns {string|number}
 *
 * @example
 * // returns '12.5k'
 * shortenLargeNumber(12543, 1)
 *
 * @example
 * // returns '-13k'
 * shortenLargeNumber(-12567)
 *
 * @example
 * // returns '51M'
 * shortenLargeNumber(51000000)
 *
 * @example
 * // returns 651
 * shortenLargeNumber(651)
 *
 * @example
 * // returns 0.12345
 * shortenLargeNumber(0.12345)
 */
function shortenLargeNumber(num, digits) {
    var units = ['k', 'M', 'G', 'T', 'P', 'E', 'Z', 'Y'],
        decimal;

    for(var i=units.length-1; i>=0; i--) {
        decimal = Math.pow(1000, i+1);

        if(num <= -decimal || num >= decimal) {
            return +(num / decimal).toFixed(digits) + units[i];
        }
    }

    return num;
}

THX @COS Để nhận xét, tôi đã loại bỏ Math.Round10 phụ thuộc.

Đã trả lời ngày 19 tháng 2 năm 2015 lúc 13:50Feb 19, 2015 at 13:50

Hướng dẫn format number to k and m javascript - số định dạng thành k và m javascript

1

Cung cấp tín dụng cho Waylon Flinn nếu bạn thích điều này

Điều này đã được cải thiện từ cách tiếp cận thanh lịch hơn của anh ấy để xử lý các số âm và trường hợp ".0".

Càng ít vòng lặp và các trường hợp "nếu" bạn có, IMO càng tốt.

function abbreviateNumber(number) {
    const SI_POSTFIXES = ["", "k", "M", "G", "T", "P", "E"];
    const sign = number < 0 ? '-1' : '';
    const absNumber = Math.abs(number);
    const tier = Math.log10(absNumber) / 3 | 0;
    // if zero, we don't need a prefix
    if(tier == 0) return `${absNumber}`;
    // get postfix and determine scale
    const postfix = SI_POSTFIXES[tier];
    const scale = Math.pow(10, tier * 3);
    // scale the number
    const scaled = absNumber / scale;
    const floored = Math.floor(scaled * 10) / 10;
    // format number and add postfix as suffix
    let str = floored.toFixed(1);
    // remove '.0' case
    str = (/\.0$/.test(str)) ? str.substr(0, str.length - 2) : str;
    return `${sign}${str}${postfix}`;
}

JSfiddle với các trường hợp thử nghiệm -> https://jsfiddle.net/qhbrz04o/9/

Đã trả lời ngày 1 tháng 2 năm 2017 lúc 16:19Feb 1, 2017 at 16:19

Hướng dẫn format number to k and m javascript - số định dạng thành k và m javascript

Thứ sáu của vuaKing Friday

23.7K12 Huy hiệu vàng86 Huy hiệu bạc83 Huy hiệu đồng12 gold badges86 silver badges83 bronze badges

5

Đây là khá thanh lịch.

function formatToUnits(number, precision) {
  const abbrev = ['', 'k', 'm', 'b', 't'];
  const unrangifiedOrder = Math.floor(Math.log10(Math.abs(number)) / 3)
  const order = Math.max(0, Math.min(unrangifiedOrder, abbrev.length -1 ))
  const suffix = abbrev[order];

  return (number / Math.pow(10, order * 3)).toFixed(precision) + suffix;
}

formatToUnits(12345, 2)
==> "12.35k"
formatToUnits(0, 3)
==> "0.000"

Đã trả lời ngày 5 tháng 4 năm 2018 lúc 11:14Apr 5, 2018 at 11:14

NovellizatornovellizatorNovellizator

12.5k9 Huy hiệu vàng41 Huy hiệu bạc63 Huy hiệu Đồng9 gold badges41 silver badges63 bronze badges

0

Tôi nghĩ rằng nó có thể là một giải pháp.

function kFormatter(num) {
    return Math.abs(num) > 999 ? Math.sign(num)*((Math.abs(num)/1000).toFixed(1)) + 'k' : Math.sign(num)*Math.abs(num)
}
    
console.log(kFormatter(1200)); // 1.2k
console.log(kFormatter(-1200)); // -1.2k
console.log(kFormatter(900)); // 900
console.log(kFormatter(-900)); // -900
0

Đã trả lời ngày 21 tháng 5 năm 2021 lúc 9:07May 21, 2021 at 9:07

Hướng dẫn format number to k and m javascript - số định dạng thành k và m javascript

Etsuko Susuietsuko SusuiEtsuko Susui

1.3757 Huy hiệu vàng12 Huy hiệu bạc22 Huy hiệu đồng7 gold badges12 silver badges22 bronze badges

1

Bạn có thể sử dụng gói định dạng D3 được mô hình hóa sau khi định dạng chuỗi nâng cao Python PEP3101:

function kFormatter(num) {
    return Math.abs(num) > 999 ? Math.sign(num)*((Math.abs(num)/1000).toFixed(1)) + 'k' : Math.sign(num)*Math.abs(num)
}
    
console.log(kFormatter(1200)); // 1.2k
console.log(kFormatter(-1200)); // -1.2k
console.log(kFormatter(900)); // 900
console.log(kFormatter(-900)); // -900
1

Đã trả lời ngày 3 tháng 11 năm 2015 lúc 10:32Nov 3, 2015 at 10:32

0

Bằng cách loại bỏ vòng lặp trong giải pháp @martin-sznapka, bạn sẽ giảm 40%thời gian thực hiện.

function kFormatter(num) {
    return Math.abs(num) > 999 ? Math.sign(num)*((Math.abs(num)/1000).toFixed(1)) + 'k' : Math.sign(num)*Math.abs(num)
}
    
console.log(kFormatter(1200)); // 1.2k
console.log(kFormatter(-1200)); // -1.2k
console.log(kFormatter(900)); // 900
console.log(kFormatter(-900)); // -900
2

Kiểm tra tốc độ (20000 mẫu ngẫu nhiên) cho các giải pháp khác nhau từ chủ đề này

function kFormatter(num) {
    return Math.abs(num) > 999 ? Math.sign(num)*((Math.abs(num)/1000).toFixed(1)) + 'k' : Math.sign(num)*Math.abs(num)
}
    
console.log(kFormatter(1200)); // 1.2k
console.log(kFormatter(-1200)); // -1.2k
console.log(kFormatter(900)); // 900
console.log(kFormatter(-900)); // -900
3

Đã trả lời ngày 1 tháng 5 năm 2020 lúc 9:39May 1, 2020 at 9:39

FerasferasFeras

2.26530 huy hiệu bạc23 Huy hiệu đồng30 silver badges23 bronze badges

Cách làm điều này đơn giản và dễ nhất là

function kFormatter(num) {
    return Math.abs(num) > 999 ? Math.sign(num)*((Math.abs(num)/1000).toFixed(1)) + 'k' : Math.sign(num)*Math.abs(num)
}
    
console.log(kFormatter(1200)); // 1.2k
console.log(kFormatter(-1200)); // -1.2k
console.log(kFormatter(900)); // 900
console.log(kFormatter(-900)); // -900
4

Điều này làm việc cho bất kỳ số. Bao gồm

const formatCash = n => {
  if (n < 1e3) return n;
  if (n >= 1e3) return +(n / 1e3).toFixed(1) + "K";
};

console.log(formatCash(2500));
2
const formatCash = n => {
  if (n < 1e3) return n;
  if (n >= 1e3) return +(n / 1e3).toFixed(1) + "K";
};

console.log(formatCash(2500));
3, v.v.

Lưu ý: Không làm việc trong Safari.

Đã trả lời ngày 1 tháng 4 năm 2020 lúc 5:10Apr 1, 2020 at 5:10

Hướng dẫn format number to k and m javascript - số định dạng thành k và m javascript

1

Phương pháp ngắn và chung chung

Bạn có thể tạo đối tượng cấu hình

const formatCash = n => {
  if (n < 1e3) return n;
  if (n >= 1e3) return +(n / 1e3).toFixed(1) + "K";
};

console.log(formatCash(2500));
4 dài hoặc ngắn như bạn muốn, tùy thuộc vào phạm vi của các giá trị bạn thử nghiệm.

function kFormatter(num) {
    return Math.abs(num) > 999 ? Math.sign(num)*((Math.abs(num)/1000).toFixed(1)) + 'k' : Math.sign(num)*Math.abs(num)
}
    
console.log(kFormatter(1200)); // 1.2k
console.log(kFormatter(-1200)); // -1.2k
console.log(kFormatter(900)); // 900
console.log(kFormatter(-900)); // -900
5

Đã trả lời ngày 5 tháng 3 năm 2020 lúc 16:30Mar 5, 2020 at 16:30

Hướng dẫn format number to k and m javascript - số định dạng thành k và m javascript

Gil Epshalingil EpshtainGil Epshtain

7.6887 Huy hiệu vàng62 Huy hiệu bạc79 Huy hiệu đồng7 gold badges62 silver badges79 bronze badges

Cải thiện hơn nữa câu trả lời của @Yash với hỗ trợ số âm:

function kFormatter(num) {
    return Math.abs(num) > 999 ? Math.sign(num)*((Math.abs(num)/1000).toFixed(1)) + 'k' : Math.sign(num)*Math.abs(num)
}
    
console.log(kFormatter(1200)); // 1.2k
console.log(kFormatter(-1200)); // -1.2k
console.log(kFormatter(900)); // 900
console.log(kFormatter(-900)); // -900
6

Đã trả lời ngày 6 tháng 1 năm 2015 lúc 8:29Jan 6, 2015 at 8:29

StrawberrystrawberryStrawberry

63.6K56 Huy hiệu vàng144 Huy hiệu bạc195 Huy hiệu Đồng56 gold badges144 silver badges195 bronze badges

0

Không hài lòng với bất kỳ giải pháp được đăng nào, vì vậy đây là phiên bản của tôi:

  1. Hỗ trợ các số dương và âm
  2. Hỗ trợ số mũ tiêu cực
  3. Vòng lên đến số mũ tiếp theo nếu có thể
  4. Thực hiện kiểm tra giới hạn (không có lỗi với số rất lớn/nhỏ)
  5. Dải tắt các số không/không gian
  6. Hỗ trợ tham số chính xác

    function kFormatter(num) {
        return Math.abs(num) > 999 ? Math.sign(num)*((Math.abs(num)/1000).toFixed(1)) + 'k' : Math.sign(num)*Math.abs(num)
    }
        
    console.log(kFormatter(1200)); // 1.2k
    console.log(kFormatter(-1200)); // -1.2k
    console.log(kFormatter(900)); // 900
    console.log(kFormatter(-900)); // -900
    7

Đã trả lời ngày 29 tháng 8 năm 2019 lúc 22:56Aug 29, 2019 at 22:56

TTKTTKttk

3952 Huy hiệu bạc3 Huy hiệu đồng2 silver badges3 bronze badges

Phiên bản 2020 của giải pháp của Waylon Flinn. edition of Waylon Flinn's solution.

function kFormatter(num) {
    return Math.abs(num) > 999 ? Math.sign(num)*((Math.abs(num)/1000).toFixed(1)) + 'k' : Math.sign(num)*Math.abs(num)
}
    
console.log(kFormatter(1200)); // 1.2k
console.log(kFormatter(-1200)); // -1.2k
console.log(kFormatter(900)); // 900
console.log(kFormatter(-900)); // -900
8

Các bài kiểm tra và ví dụ:

Đã trả lời ngày 16 tháng 12 năm 2020 lúc 13:17Dec 16, 2020 at 13:17

2

function kFormatter(num) {
    return Math.abs(num) > 999 ? Math.sign(num)*((Math.abs(num)/1000).toFixed(1)) + 'k' : Math.sign(num)*Math.abs(num)
}
    
console.log(kFormatter(1200)); // 1.2k
console.log(kFormatter(-1200)); // -1.2k
console.log(kFormatter(900)); // 900
console.log(kFormatter(-900)); // -900
9

transform(9999,2)

// "10,00k"

Đã trả lời ngày 10 tháng 1 lúc 12:35Jan 10 at 12:35

Hướng dẫn format number to k and m javascript - số định dạng thành k và m javascript

1

Bài đăng này khá cũ nhưng bằng cách nào đó tôi đã đạt được bài đăng này để tìm kiếm một cái gì đó. Vì vậy, để thêm số đầu vào của tôi JS là giải pháp một điểm dừng bây giờ một ngày. Nó cung cấp một số lượng lớn các phương pháp để giúp định dạng các số

http://numeraljs.com/

Đã trả lời ngày 15 tháng 6 năm 2015 lúc 23:40Jun 15, 2015 at 23:40

Hướng dẫn format number to k and m javascript - số định dạng thành k và m javascript

VatsalvatsalVatsal

1.9581 Huy hiệu vàng20 Huy hiệu bạc24 Huy hiệu đồng1 gold badge20 silver badges24 bronze badges

1

Dưới đây là một tùy chọn sử dụng

const formatCash = n => {
  if (n < 1e3) return n;
  if (n >= 1e3) return +(n / 1e3).toFixed(1) + "K";
};

console.log(formatCash(2500));
5:

var SI_SYMBOL = ["", "k", "M", "G", "T", "P", "E"];

function abbreviateNumber(number){

    // what tier? (determines SI symbol)
    var tier = Math.log10(Math.abs(number)) / 3 | 0;

    // if zero, we don't need a suffix
    if(tier == 0) return number;

    // get suffix and determine scale
    var suffix = SI_SYMBOL[tier];
    var scale = Math.pow(10, tier * 3);

    // scale the number
    var scaled = number / scale;

    // format number and add suffix
    return scaled.toFixed(1) + suffix;
}
0

Đã trả lời ngày 17 tháng 11 năm 2020 lúc 19:26Nov 17, 2020 at 19:26

Thêm vào câu trả lời hàng đầu, điều này sẽ cung cấp 1k cho 1000 thay vì 1,0k

var SI_SYMBOL = ["", "k", "M", "G", "T", "P", "E"];

function abbreviateNumber(number){

    // what tier? (determines SI symbol)
    var tier = Math.log10(Math.abs(number)) / 3 | 0;

    // if zero, we don't need a suffix
    if(tier == 0) return number;

    // get suffix and determine scale
    var suffix = SI_SYMBOL[tier];
    var scale = Math.pow(10, tier * 3);

    // scale the number
    var scaled = number / scale;

    // format number and add suffix
    return scaled.toFixed(1) + suffix;
}
1

Đã trả lời ngày 9 tháng 3 năm 2017 lúc 5:57Mar 9, 2017 at 5:57

Một phiên bản sửa đổi của câu trả lời của Waylon Flinn với sự hỗ trợ cho số mũ âm:

var SI_SYMBOL = ["", "k", "M", "G", "T", "P", "E"];

function abbreviateNumber(number){

    // what tier? (determines SI symbol)
    var tier = Math.log10(Math.abs(number)) / 3 | 0;

    // if zero, we don't need a suffix
    if(tier == 0) return number;

    // get suffix and determine scale
    var suffix = SI_SYMBOL[tier];
    var scale = Math.pow(10, tier * 3);

    // scale the number
    var scaled = number / scale;

    // format number and add suffix
    return scaled.toFixed(1) + suffix;
}
2

Đầu ra dự kiến:

var SI_SYMBOL = ["", "k", "M", "G", "T", "P", "E"];

function abbreviateNumber(number){

    // what tier? (determines SI symbol)
    var tier = Math.log10(Math.abs(number)) / 3 | 0;

    // if zero, we don't need a suffix
    if(tier == 0) return number;

    // get suffix and determine scale
    var suffix = SI_SYMBOL[tier];
    var scale = Math.pow(10, tier * 3);

    // scale the number
    var scaled = number / scale;

    // format number and add suffix
    return scaled.toFixed(1) + suffix;
}
3

Đã trả lời ngày 28 tháng 3 năm 2019 lúc 9:58Mar 28, 2019 at 9:58

Chức năng này có thể biến đổi số lượng khổng lồ (cả tích cực và tiêu cực) thành định dạng thân thiện với người đọc mà không mất độ chính xác của nó:

var SI_SYMBOL = ["", "k", "M", "G", "T", "P", "E"];

function abbreviateNumber(number){

    // what tier? (determines SI symbol)
    var tier = Math.log10(Math.abs(number)) / 3 | 0;

    // if zero, we don't need a suffix
    if(tier == 0) return number;

    // get suffix and determine scale
    var suffix = SI_SYMBOL[tier];
    var scale = Math.pow(10, tier * 3);

    // scale the number
    var scaled = number / scale;

    // format number and add suffix
    return scaled.toFixed(1) + suffix;
}
4

Đã trả lời ngày 11 tháng 4 năm 2019 lúc 12:09Apr 11, 2019 at 12:09

Hướng dẫn format number to k and m javascript - số định dạng thành k và m javascript

Hamzeen Hameemhamzeen HameemHamzeen Hameem

2.0701 Huy hiệu vàng26 Huy hiệu bạc25 Huy hiệu đồng1 gold badge26 silver badges25 bronze badges

Cải thiện câu trả lời của @tfmontague cho định dạng các vị trí thập phân. 33,0k đến 33k

var SI_SYMBOL = ["", "k", "M", "G", "T", "P", "E"];

function abbreviateNumber(number){

    // what tier? (determines SI symbol)
    var tier = Math.log10(Math.abs(number)) / 3 | 0;

    // if zero, we don't need a suffix
    if(tier == 0) return number;

    // get suffix and determine scale
    var suffix = SI_SYMBOL[tier];
    var scale = Math.pow(10, tier * 3);

    // scale the number
    var scaled = number / scale;

    // format number and add suffix
    return scaled.toFixed(1) + suffix;
}
5

Đã trả lời ngày 19 tháng 7 năm 2019 lúc 6:04Jul 19, 2019 at 6:04

Abdul Rahmanabdul RahmanAbdul Rahman

1.7931 Huy hiệu vàng20 Huy hiệu bạc21 Huy hiệu đồng1 gold badge20 silver badges21 bronze badges

Tôi đã nghĩ ra một mã rất golf, và nó rất ngắn!

var SI_SYMBOL = ["", "k", "M", "G", "T", "P", "E"];

function abbreviateNumber(number){

    // what tier? (determines SI symbol)
    var tier = Math.log10(Math.abs(number)) / 3 | 0;

    // if zero, we don't need a suffix
    if(tier == 0) return number;

    // get suffix and determine scale
    var suffix = SI_SYMBOL[tier];
    var scale = Math.pow(10, tier * 3);

    // scale the number
    var scaled = number / scale;

    // format number and add suffix
    return scaled.toFixed(1) + suffix;
}
6

Đã trả lời ngày 28 tháng 10 năm 2019 lúc 20:10Oct 28, 2019 at 20:10

Hướng dẫn format number to k and m javascript - số định dạng thành k và m javascript

0

Cải thiện hơn nữa câu trả lời của Salman vì các trường hợp như Nformatter (99999,1) trả về 1000k.

var SI_SYMBOL = ["", "k", "M", "G", "T", "P", "E"];

function abbreviateNumber(number){

    // what tier? (determines SI symbol)
    var tier = Math.log10(Math.abs(number)) / 3 | 0;

    // if zero, we don't need a suffix
    if(tier == 0) return number;

    // get suffix and determine scale
    var suffix = SI_SYMBOL[tier];
    var scale = Math.pow(10, tier * 3);

    // scale the number
    var scaled = number / scale;

    // format number and add suffix
    return scaled.toFixed(1) + suffix;
}
7

Đã trả lời ngày 6 tháng 11 năm 2019 lúc 16:43Nov 6, 2019 at 16:43

Hỗ trợ lên đến

const formatCash = n => {
  if (n < 1e3) return n;
  if (n >= 1e3) return +(n / 1e3).toFixed(1) + "K";
};

console.log(formatCash(2500));
6 và xuống đến
const formatCash = n => {
  if (n < 1e3) return n;
  if (n >= 1e3) return +(n / 1e3).toFixed(1) + "K";
};

console.log(formatCash(2500));
7

var SI_SYMBOL = ["", "k", "M", "G", "T", "P", "E"];

function abbreviateNumber(number){

    // what tier? (determines SI symbol)
    var tier = Math.log10(Math.abs(number)) / 3 | 0;

    // if zero, we don't need a suffix
    if(tier == 0) return number;

    // get suffix and determine scale
    var suffix = SI_SYMBOL[tier];
    var scale = Math.pow(10, tier * 3);

    // scale the number
    var scaled = number / scale;

    // format number and add suffix
    return scaled.toFixed(1) + suffix;
}
8

Đã trả lời ngày 14 tháng 9 năm 2020 lúc 15:04Sep 14, 2020 at 15:04

Hướng dẫn format number to k and m javascript - số định dạng thành k và m javascript

Dugongdugongdugong

2.5661 Huy hiệu vàng9 Huy hiệu bạc26 Huy hiệu đồng1 gold badge9 silver badges26 bronze badges

  • Hỗ trợ số âm
  • Kiểm tra
    const formatCash = n => {
      if (n < 1e3) return n;
      if (n >= 1e3) return +(n / 1e3).toFixed(1) + "K";
    };
    
    console.log(formatCash(2500));
    8
  • Thay đổi
    const formatCash = n => {
      if (n < 1e3) return n;
      if (n >= 1e3) return +(n / 1e3).toFixed(1) + "K";
    };
    
    console.log(formatCash(2500));
    9 thành
    const formatCash = n => {
      if (n < 1e3) return n;
      if (n >= 1e3 && n < 1e6) return +(n / 1e3).toFixed(1) + "K";
      if (n >= 1e6 && n < 1e9) return +(n / 1e6).toFixed(1) + "M";
      if (n >= 1e9 && n < 1e12) return +(n / 1e9).toFixed(1) + "B";
      if (n >= 1e12) return +(n / 1e12).toFixed(1) + "T";
    };
    
    console.log(formatCash(1235000));
    0 nếu bạn muốn đơn vị tối đa là
    const formatCash = n => {
      if (n < 1e3) return n;
      if (n >= 1e3 && n < 1e6) return +(n / 1e3).toFixed(1) + "K";
      if (n >= 1e6 && n < 1e9) return +(n / 1e6).toFixed(1) + "M";
      if (n >= 1e9 && n < 1e12) return +(n / 1e9).toFixed(1) + "B";
      if (n >= 1e12) return +(n / 1e12).toFixed(1) + "T";
    };
    
    console.log(formatCash(1235000));
    1
  • Tùy chọn cho cơ sở (1K = 1000 / 1K = 1024)

var SI_SYMBOL = ["", "k", "M", "G", "T", "P", "E"];

function abbreviateNumber(number){

    // what tier? (determines SI symbol)
    var tier = Math.log10(Math.abs(number)) / 3 | 0;

    // if zero, we don't need a suffix
    if(tier == 0) return number;

    // get suffix and determine scale
    var suffix = SI_SYMBOL[tier];
    var scale = Math.pow(10, tier * 3);

    // scale the number
    var scaled = number / scale;

    // format number and add suffix
    return scaled.toFixed(1) + suffix;
}
9

Đã trả lời ngày 4 tháng 9 năm 2018 lúc 1:35Sep 4, 2018 at 1:35

Cánh dai dẳngSteely Wing

15K6 Huy hiệu vàng54 Huy hiệu bạc51 Huy hiệu đồng6 gold badges54 silver badges51 bronze badges

2

function nFormatter(num) {
     if (num >= 1000000000) {
        return (num / 1000000000).toFixed(1).replace(/\.0$/, '') + 'G';
     }
     if (num >= 1000000) {
        return (num / 1000000).toFixed(1).replace(/\.0$/, '') + 'M';
     }
     if (num >= 1000) {
        return (num / 1000).toFixed(1).replace(/\.0$/, '') + 'K';
     }
     return num;
}
0

Đã trả lời ngày 15 tháng 3 năm 2018 lúc 11:37Mar 15, 2018 at 11:37

1

Tôi đang sử dụng chức năng này. Nó hoạt động cho cả

const formatCash = n => {
  if (n < 1e3) return n;
  if (n >= 1e3 && n < 1e6) return +(n / 1e3).toFixed(1) + "K";
  if (n >= 1e6 && n < 1e9) return +(n / 1e6).toFixed(1) + "M";
  if (n >= 1e9 && n < 1e12) return +(n / 1e9).toFixed(1) + "B";
  if (n >= 1e12) return +(n / 1e12).toFixed(1) + "T";
};

console.log(formatCash(1235000));
2 và
const formatCash = n => {
  if (n < 1e3) return n;
  if (n >= 1e3 && n < 1e6) return +(n / 1e3).toFixed(1) + "K";
  if (n >= 1e6 && n < 1e9) return +(n / 1e6).toFixed(1) + "M";
  if (n >= 1e9 && n < 1e12) return +(n / 1e9).toFixed(1) + "B";
  if (n >= 1e12) return +(n / 1e12).toFixed(1) + "T";
};

console.log(formatCash(1235000));
3.

function nFormatter(num) {
     if (num >= 1000000000) {
        return (num / 1000000000).toFixed(1).replace(/\.0$/, '') + 'G';
     }
     if (num >= 1000000) {
        return (num / 1000000).toFixed(1).replace(/\.0$/, '') + 'M';
     }
     if (num >= 1000) {
        return (num / 1000).toFixed(1).replace(/\.0$/, '') + 'K';
     }
     return num;
}
1

Đã trả lời ngày 12 tháng 6 năm 2019 lúc 10:05Jun 12, 2019 at 10:05

Shahshahshah

1.1652 huy hiệu vàng19 Huy hiệu bạc40 Huy hiệu đồng2 gold badges19 silver badges40 bronze badges

Làm thế nào để bạn chuyển đổi các giá trị thành k?

Nhấn Ctrl+1 hoặc nhấp chuột phải và chọn các ô định dạng để mở hộp thoại Định dạng ô. Chuyển đến tab Thenumber (đó là tab mặc định nếu bạn chưa mở trước đó). Chọn tùy chỉnh trong danh sách danh mục. Nhập vào#, ## 0,0, "K" để hiển thị 1.500.800 là 1.500,8 K.Type in #,##0.0, "K" to display 1,500,800 as 1,500.8 K.

Làm thế nào để bạn chuyển đổi một số thành một chuỗi phân tách bằng dấu phẩy?

Sử dụng phương thức tolocalestring () Phương thức javaScript tolocalestring () được sử dụng để chuyển đổi các phần tử của mảng đã cho thành một chuỗi và các chuỗi này được phân tách bằng dấu phẩy ",". The JavaScript toLocaleString() method is used to convert the elements of the given array into a string, and these Strings are separated by a comma ",".

Làm thế nào để bạn in một số với dấu phẩy dưới dạng hàng ngàn phân tách trong JavaScript?

Để đánh dấu dấu phẩy hàng ngàn trong một số lượng lớn trong JavaScript, hãy sử dụng phương thức Tolocalestring () tích hợp.Nó định vị số lượng để theo một định dạng số cụ thể của quốc gia.Để tách hàng ngàn với dấu phẩy, hãy bản địa hóa số cho Hoa Kỳ.use the built-in toLocaleString() method. It localizes the number to follow a country-specific number formatting. To separate thousands with commas, localize the number to the USA.

Làm thế nào để bạn viết tắt số trong javascript?

Số lượng viết tắt hàm có hai đối số: số bạn muốn rút ngắn và số lượng số thập phân bạn muốn số có.Ví dụ, Abbrnum (34549,0) sẽ trả lại 34K và Abbrnum (34549,1) sẽ trả lại 34,5k.The function takes two arguments: the number you want to shorten and the number of decimal places you want the number to have. For example, abbrNum(34549,0) would return 34k and abbrNum(34549,1) would return 34.5k .