最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript實(shí)現(xiàn)給浮點(diǎn)數(shù)添加千分位逗號的多種方法

 更新時間:2025年04月21日 09:34:46   作者:Peter-Lu  
JavaScript 是一門強(qiáng)大的前端語言,在處理數(shù)值格式化時提供了多種方法,在開發(fā)過程中,我們經(jīng)常需要將大數(shù)字格式化,使其更具可讀性,例如,將 12000000.11 轉(zhuǎn)換為 12,000,000.11,本文將詳細(xì)介紹 JavaScript 中如何實(shí)現(xiàn)這種格式化,需要的朋友可以參考下

一、問題背景

在 Web 開發(fā)中,我們經(jīng)常需要在界面上展示財務(wù)數(shù)據(jù)、統(tǒng)計數(shù)據(jù)或者其他大型數(shù)字。為了提升可讀性,通常會在整數(shù)部分每三位添加一個逗號。例如:

  • 1000 → 1,000
  • 1000000 → 1,000,000
  • 12345678.9 → 12,345,678.9

JavaScript 并沒有提供內(nèi)置的方法直接實(shí)現(xiàn)這種格式化,因此我們需要使用正則表達(dá)式、toLocaleString() 方法或手動實(shí)現(xiàn)格式化邏輯。

二、使用 toLocaleString() 方法

JavaScript 提供了 toLocaleString() 方法,可以直接將數(shù)字格式化為帶有千分位分隔符的字符串。

const num = 12000000.11;
console.log(num.toLocaleString()); // "12,000,000.11"

該方法默認(rèn)使用用戶所在地區(qū)的數(shù)字格式。例如,在美國地區(qū),toLocaleString() 會使用逗號作為千分位分隔符,而在部分歐洲地區(qū)可能會使用 . 作為分隔符。

如果需要指定格式,可以傳遞 locales 參數(shù),例如:

console.log(num.toLocaleString('en-US')); // "12,000,000.11"
console.log(num.toLocaleString('de-DE')); // "12.000.000,11"

優(yōu)點(diǎn)

  • 簡潔易用,一行代碼即可完成格式化。
  • 自動適配不同地區(qū)的格式。

缺點(diǎn)

  • 無法完全自定義格式,例如指定小數(shù)位數(shù)。
  • 依賴瀏覽器環(huán)境,部分低版本瀏覽器可能不支持。

三、使用正則表達(dá)式實(shí)現(xiàn)千分位格式化

如果需要更靈活的控制,可以使用正則表達(dá)式手動實(shí)現(xiàn)千分位格式化。

function formatNumber(num) {
  const [integer, decimal] = num.toString().split('.');
  return integer.replace(/\B(?=(\d{3})+(?!\d))/g, ',') + (decimal ? '.' + decimal : '');
}

console.log(formatNumber(12000000.11)); // "12,000,000.11"

正則表達(dá)式解析

/\B(?=(\d{3})+(?!\d))/g
    • \B:匹配非單詞邊界,確保不會影響開頭的數(shù)字。
    • (?=(\d{3})+(?!\d)):匹配位置,使得每三位數(shù)字前加上逗號。

優(yōu)點(diǎn)

  • 代碼量小,性能較高。
  • 適用于所有 JavaScript 運(yùn)行環(huán)境。

缺點(diǎn)

  • 需要對正則表達(dá)式有一定的理解。
  • 無法自動適配不同地區(qū)的格式。

四、使用 Intl.NumberFormat 進(jìn)行格式化

JavaScript 提供了 Intl.NumberFormat API,可以用于更加靈活的數(shù)值格式化。

const formatter = new Intl.NumberFormat('en-US', {
  minimumFractionDigits: 2,
  maximumFractionDigits: 2
});

console.log(formatter.format(12000000.11)); // "12,000,000.11"

優(yōu)點(diǎn)

  • 提供更強(qiáng)的格式化控制,如小數(shù)位數(shù)等。
  • 支持國際化。

缺點(diǎn)

  • 需要創(chuàng)建 Intl.NumberFormat 實(shí)例。
  • 可能不支持所有瀏覽器(低版本瀏覽器需要 polyfill)。

五、手動實(shí)現(xiàn)格式化函數(shù)

如果想要完全掌控格式化過程,可以使用純 JavaScript 手動實(shí)現(xiàn):

function formatNumberManual(num) {
  let [integer, decimal] = num.toString().split('.');
  let result = '';
  let count = 0;

  for (let i = integer.length - 1; i >= 0; i--) {
    count++;
    result = integer[i] + result;
    if (count % 3 === 0 && i !== 0) {
      result = ',' + result;
    }
  }

  return decimal ? result + '.' + decimal : result;
}

console.log(formatNumberManual(12000000.11)); // "12,000,000.11"

代碼解析

  1. 將數(shù)字轉(zhuǎn)換為字符串,并拆分整數(shù)和小數(shù)部分。
  2. 通過遍歷整數(shù)部分,每三位插入一個逗號。
  3. 重新組合整數(shù)和小數(shù)部分。

優(yōu)點(diǎn)

  • 適用于所有 JavaScript 運(yùn)行環(huán)境。
  • 代碼完全可控,可自由調(diào)整格式。

缺點(diǎn)

  • 代碼較長,需要手動處理每個細(xì)節(jié)。

六、性能對比

不同方法的性能有所不同,通常情況下:

方法可讀性性能兼容性
toLocaleString()一般依賴瀏覽器
正則表達(dá)式一般兼容性好
Intl.NumberFormat依賴瀏覽器
手動實(shí)現(xiàn)最高兼容性好

七、總結(jié)

JavaScript 提供了多種方式來格式化數(shù)字并添加千分位逗號,每種方法都有其適用場景:

  • toLocaleString() 適合簡單場景,且能自動適配不同地區(qū)格式。
  • 正則表達(dá)式方法適合大部分場景,代碼簡潔且性能較高。
  • Intl.NumberFormat 提供更強(qiáng)的格式化能力,適合國際化應(yīng)用。
  • 手動實(shí)現(xiàn)方法適用于所有環(huán)境,適合對格式有特殊需求的場景。

以上就是JavaScript實(shí)現(xiàn)給浮點(diǎn)數(shù)添加千分位逗號的多種方法的詳細(xì)內(nèi)容,更多關(guān)于JavaScript浮點(diǎn)數(shù)添加千分位逗號的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • JS加jquery簡單實(shí)現(xiàn)標(biāo)簽元素的顯示或隱藏

    JS加jquery簡單實(shí)現(xiàn)標(biāo)簽元素的顯示或隱藏

    標(biāo)簽元素的顯示或隱藏在使用中還是挺頻繁的,下面有個不錯的示例,大家可以參考下,或許有所幫助
    2013-09-09
  • js使用swiper實(shí)現(xiàn)層疊輪播效果實(shí)例代碼

    js使用swiper實(shí)現(xiàn)層疊輪播效果實(shí)例代碼

    這篇文章主要給大家介紹了關(guān)于js使用swiper實(shí)現(xiàn)層疊輪播效果的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-12-12
  • JS使用位運(yùn)算實(shí)現(xiàn)權(quán)限組合的代碼示例

    JS使用位運(yùn)算實(shí)現(xiàn)權(quán)限組合的代碼示例

    在業(yè)務(wù)開發(fā)中我們經(jīng)常會遇到處理不同權(quán)限的情況,例如根據(jù)用戶角色是否有編輯權(quán)限來展示和隱藏一個按鈕,或者一個函數(shù)根據(jù)傳入的配置項(xiàng)來執(zhí)行不同的邏輯,也就是所謂的權(quán)限控制,所以本文給大家介紹了JS使用位運(yùn)算實(shí)現(xiàn)權(quán)限組合,需要的朋友可以參考下
    2024-07-07
  • javascript解析ajax返回的xml和json格式數(shù)據(jù)實(shí)例詳解

    javascript解析ajax返回的xml和json格式數(shù)據(jù)實(shí)例詳解

    這篇文章主要介紹了javascript解析ajax返回的xml和json格式數(shù)據(jù),結(jié)合實(shí)例形式詳細(xì)分析了JS ajax調(diào)用及返回值中xml與json格式數(shù)據(jù)的處理技巧,需要的朋友可以參考下
    2017-01-01
  • js獲取Get值的方法

    js獲取Get值的方法

    這篇文章主要介紹了js獲取Get值的方法,涉及javascript正則及頁面參數(shù)操作相關(guān)技巧,需要的朋友可以參考下
    2016-09-09
  • js確認(rèn)刪除對話框適用于a標(biāo)簽及submit

    js確認(rèn)刪除對話框適用于a標(biāo)簽及submit

    這篇文章主要介紹的是一個js確認(rèn)刪除對話框適用于a標(biāo)簽及submit,非常好用,需要的朋友不要錯過
    2014-07-07
  • 用js寫了一個類似php的print_r輸出換行功能

    用js寫了一個類似php的print_r輸出換行功能

    因?yàn)閜hp的print_r比較好用同時js卻沒有這個功能于是自己就寫了一個,感興趣的你可不要錯過了哈,希望本文對你提高知識有所幫助
    2013-02-02
  • 微信JSSDK實(shí)現(xiàn)打開攝像頭拍照再將相片保存到服務(wù)器

    微信JSSDK實(shí)現(xiàn)打開攝像頭拍照再將相片保存到服務(wù)器

    這篇文章主要介紹了微信JSSDK實(shí)現(xiàn)打開攝像頭拍照再將相片保存到服務(wù)器,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • JavaScript中實(shí)現(xiàn)繼承的三種方式和實(shí)例

    JavaScript中實(shí)現(xiàn)繼承的三種方式和實(shí)例

    這篇文章主要介紹了JavaScript中實(shí)現(xiàn)繼承的三種方式和實(shí)例,本文講解了類式繼承、原型式繼承、使用擴(kuò)充方法實(shí)現(xiàn)多重繼承三種方式,需要的朋友可以參考下
    2015-01-01
  • JavaScript 中如何實(shí)現(xiàn)并發(fā)控制

    JavaScript 中如何實(shí)現(xiàn)并發(fā)控制

    在日常開發(fā)過程中,你可能會遇到并發(fā)控制的場景,比如控制請求并發(fā)數(shù)。那么在 JavaScript 中如何實(shí)現(xiàn)并發(fā)控制呢?在回答這個問題之前,我們來簡單介紹一下并發(fā)控制。
    2021-05-05

最新評論

渭南市| 荣成市| 伽师县| 乐山市| 舞阳县| 临夏市| 通城县| 景谷| 句容市| 治县。| 安庆市| 南靖县| 偃师市| 开平市| 信宜市| 弥勒县| 诏安县| 华亭县| 沙坪坝区| 恩平市| 吉林省| 蓝山县| 安乡县| 安图县| 襄樊市| 柳河县| 贵州省| 益阳市| 屏山县| 绥棱县| 施秉县| 科技| 岳阳市| 剑川县| 沙湾县| 昭觉县| 巴楚县| 青海省| 七台河市| 芜湖市| 平南县|