欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JavaScript 格式化金額常見(jiàn)方法

 更新時(shí)間:2023年05月29日 09:47:17   作者:飛仔FeiZai  
這篇文章主要介紹了JavaScript 格式化金額最常見(jiàn)方法,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

JavaScript 格式化金額

一、使用 Intl.NumberFormat 構(gòu)造函數(shù)

這是 JavaScript 中格式化金額的最常見(jiàn)方法。Intl.NumberFormat()構(gòu)造函數(shù)接受兩個(gè)參數(shù):語(yǔ)言環(huán)境和選項(xiàng)。語(yǔ)言環(huán)境是為其格式化金額的語(yǔ)言和地區(qū)。選項(xiàng)是一組控制金額格式的屬性。例如,可以使用樣式屬性來(lái)指定貨幣的格式,使用貨幣屬性來(lái)指定要將金額格式化為的貨幣。

const amount = 1234567.89;
const locale = "en-US";
const options = {
  style: "currency",
  currency: "USD",
};
const formattedAmount = new Intl.NumberFormat(locale, options).format(amount);
console.log(formattedAmount); //$1,234,567.89

二、使用 Number.prototype.toLocaleString 方法

要格式化金額,可以使用 JavaScript 的 toLocaleString() 方法。該方法可以將數(shù)字轉(zhuǎn)換為本地化的字符串表示形式,并可以指定貨幣符號(hào)、小數(shù)點(diǎn)和千位分隔符等格式。

代碼如下:

美元

const amount = 1234567.89;
const formattedAmount = amount.toLocaleString("en-US", {
  style: "currency",
  currency: "USD",
  minimumFractionDigits: 2,
  maximumFractionDigits: 2,
});
console.log(formattedAmount); //$1,234,567.89

人民幣

const amount = 1234567.89;
const formattedAmount = amount.toLocaleString("zh-CN", {
  style: "currency",
  currency: "CNY",
  minimumFractionDigits: 2,
  maximumFractionDigits: 2,
});
console.log(formattedAmount);

在這個(gè)示例中,將數(shù)字變量 amount 使用 toLocaleString() 方法轉(zhuǎn)換為本地化的字符串表示形式,并指定了以下格式:

  • style: 'currency' 表示使用貨幣格式顯示金額。
  • currency: 'USD' 表示使用美元符號(hào)作為貨幣符號(hào)。
  • minimumFractionDigits: 2 表示最少保留兩位小數(shù)。
  • maximumFractionDigits: 2 表示最多保留兩位小數(shù)。

通過(guò)這種方式,可以使用 JavaScript 快速簡(jiǎn)單地實(shí)現(xiàn)金額格式化效果。需要注意的是,toLocaleString() 方法在不同的瀏覽器和操作系統(tǒng)中可能存在差異,需要進(jìn)行兼容性測(cè)試和兼容性處理。

三、 使用模板字符串 + Number.prototype.toFixed + 正則替換

const amount = 1234567.89;
const formattedAmount = `¥${amount
  .toFixed(2)
  .replace(/\B(?=(\d{3})+(?!\d))/g, ",")}`;
console.log(formattedAmount);

在這個(gè)示例中,通過(guò) toFixed 使金額保留兩位小數(shù),使用正則替換的方式增加千位分隔符,再使用模板字符串進(jìn)行拼接。

js金額數(shù)字格式化

一.使用字符串操作方法格式化

①整數(shù)金額格式化:

function moneyFormat (num) {
      const len = num.length
      return len <= 3 ? num : this.moneyFormat(num.substr(0, len - 3)) + ',' + num.substr(len - 3, 3)
}
var num = 12345000
var res = moneyFormat(String(num))
console.log('result:', res) // '12,345,000'

②自定義保留decimal位小數(shù),并使用split分隔符的數(shù)字格式化:

function moneyFormat (num, decimal = 2, split = ',') {
  /*
    parameter:
    num:格式化目標(biāo)數(shù)字
    decimal:保留幾位小數(shù),默認(rèn)2位
    split:千分位分隔符,默認(rèn)為,
    moneyFormat(123456789.87654321, 2, ',') // 123,456,789.88
  */
  function thousandFormat (num) {
    const len = num.length
    return len <= 3 ? num : thousandFormat(num.substr(0, len - 3)) + split + num.substr(len - 3, 3)
  }
  if (isFinite(num)) { // num是數(shù)字
    if (num === 0) { // 為0
      return num.toFixed(decimal)
    } else { // 非0
      var res = ''
      var dotIndex = String(num).indexOf('.')
      if (dotIndex === -1) { // 整數(shù)
        res = thousandFormat(String(num)) + '.' + '0'.repeat(decimal)
      } else { // 非整數(shù)
        // js四舍五入 Math.round():正數(shù)時(shí)4舍5入,負(fù)數(shù)時(shí)5舍6入
        // Math.round(1.5) = 2
        // Math.round(-1.5) = -1
        // Math.round(-1.6) = -2
        // 保留decimals位小數(shù)
        const numStr = String((Math.round(num * Math.pow(10, decimal)) / Math.pow(10, decimal)).toFixed(decimal)) // 四舍五入,然后固定保留2位小數(shù)
        const decimals = numStr.slice(dotIndex, dotIndex + decimal + 1) // 截取小數(shù)位
        res = thousandFormat(numStr.slice(0, dotIndex)) + decimals
      }
      return res
    }
  } else {
    return '--'
  }
}
console.log('result:', moneyFormat(123456789.87654321)) // '123,456,789.88'

二.使用正則表達(dá)式格式化

 ①整數(shù)金額格式化:

function moneyFormat (num) {
      return String(num).replace(/(\d)(?=(?:\d{3})+$)/g, '$1,')
}
var num = 12345000
var res = moneyFormat(num)
console.log('result:', res) // '12,345,000'

②自定義保留decimal位小數(shù),并使用split分隔符的數(shù)字格式化:

function moneyFormat (num, decimal = 2, split = ',') {
  /*
    parameter:
    num:格式化目標(biāo)數(shù)字
    decimal:保留幾位小數(shù),默認(rèn)2位
    split:千分位分隔符,默認(rèn)為,
    moneyFormat(123456789.87654321, 2, ',') // 123,456,789.88
  */
  if (isFinite(num)) { // num是數(shù)字
    if (num === 0) { // 為0
      return num.toFixed(decimal)
    } else { // 非0
      var res = ''
      var dotIndex = String(num).indexOf('.')
      if (dotIndex === -1) { // 整數(shù)
        res = String(num).replace(/(\d)(?=(?:\d{3})+$)/g, `$1${split}`) + '.' + '0'.repeat(decimal)
      } else { // 非整數(shù)
        // js四舍五入 Math.round():正數(shù)時(shí)4舍5入,負(fù)數(shù)時(shí)5舍6入
        // Math.round(1.5) = 2
        // Math.round(-1.5) = -1
        // Math.round(-1.6) = -2
        // 保留decimals位小數(shù)
        const numStr = String((Math.round(num * Math.pow(10, decimal)) / Math.pow(10, decimal)).toFixed(decimal)) // 四舍五入,然后固定保留2位小數(shù)
        const decimals = numStr.slice(dotIndex, dotIndex + decimal + 1) // 截取小數(shù)位
        res = String(numStr.slice(0, dotIndex)).replace(/(\d)(?=(?:\d{3})+$)/g, `$1${split}`) + decimals
      }
      return res
    }
  } else {
    return '--'
  }
}
console.log('result:', moneyFormat(123456789.87654321)) // '123,456,789.88'

到此這篇關(guān)于JavaScript 格式化金額的文章就介紹到這了,更多相關(guān)js格式化金額內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Postman動(dòng)態(tài)獲取返回值過(guò)程詳解

    Postman動(dòng)態(tài)獲取返回值過(guò)程詳解

    這篇文章主要介紹了Postman動(dòng)態(tài)獲取返回值過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06
  • ECMAScript中迭代器的深入講解

    ECMAScript中迭代器的深入講解

    在ECMAScript 6增加了一個(gè)對(duì)象,它不是新的語(yǔ)法或新的內(nèi)置對(duì)象,而一種協(xié)議( 迭代器協(xié)議),所有遵守這個(gè)協(xié)議的對(duì)象,都可以稱之為迭代器,這篇文章主要給大家介紹了關(guān)于ECMAScript中迭代器的相關(guān)資料,需要的朋友可以參考下
    2021-08-08
  • JavaScript利用Canvas實(shí)現(xiàn)粒子動(dòng)畫(huà)倒計(jì)時(shí)

    JavaScript利用Canvas實(shí)現(xiàn)粒子動(dòng)畫(huà)倒計(jì)時(shí)

    粒子動(dòng)畫(huà)就是頁(yè)面上通過(guò)發(fā)射許多微小粒子來(lái)表示不規(guī)則模糊物體。本文將利用canvas實(shí)現(xiàn)酷炫的粒子動(dòng)畫(huà)倒計(jì)時(shí),感興趣的小伙伴可以嘗試一下
    2022-12-12
  • 微信小程序頁(yè)面返回傳值的4種解決方案匯總

    微信小程序頁(yè)面返回傳值的4種解決方案匯總

    這篇文章主要給大家介紹了關(guān)于微信小程序頁(yè)面返回傳值的4種解決方案,小程序開(kāi)發(fā)中經(jīng)常會(huì)遇到這種場(chǎng)景,比如提交問(wèn)題,然后需要返回之前頁(yè)面,本文通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2021-07-07
  • layui點(diǎn)擊左側(cè)導(dǎo)航欄,實(shí)現(xiàn)不刷新整個(gè)頁(yè)面,只刷新局部的方法

    layui點(diǎn)擊左側(cè)導(dǎo)航欄,實(shí)現(xiàn)不刷新整個(gè)頁(yè)面,只刷新局部的方法

    今天小編就為大家分享一篇layui點(diǎn)擊左側(cè)導(dǎo)航欄,實(shí)現(xiàn)不刷新整個(gè)頁(yè)面,只刷新局部的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-09-09
  • JavaScript類型相關(guān)的常用操作總結(jié)

    JavaScript類型相關(guān)的常用操作總結(jié)

    這篇文章主要給大家總結(jié)介紹了關(guān)于JavaScript類型相關(guān)的常用操作,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-02-02
  • js 中獲取制定的cook信息實(shí)現(xiàn)方法

    js 中獲取制定的cook信息實(shí)現(xiàn)方法

    下面小編就為大家?guī)?lái)一篇js 中獲取制定的cook信息實(shí)現(xiàn)方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-11-11
  • js中什么時(shí)候不能使用箭頭函數(shù)

    js中什么時(shí)候不能使用箭頭函數(shù)

    箭頭函數(shù)是和我們工作密切相關(guān)的東西,本文主要介紹了js中什么時(shí)候不能使用箭頭函數(shù),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • Javascript中this關(guān)鍵字指向問(wèn)題的測(cè)試與詳解

    Javascript中this關(guān)鍵字指向問(wèn)題的測(cè)試與詳解

    this是Javascript中一個(gè)非常容易理解錯(cuò),進(jìn)而用錯(cuò)的特性。所以下面這篇文章主要給大家介紹了關(guān)于Javascript中this關(guān)鍵字指向問(wèn)題的相關(guān)資料,文中通過(guò)測(cè)試的題目考驗(yàn)大家對(duì)this的熟悉程度,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。
    2017-08-08
  • JS中不推薦使用的幾個(gè)函數(shù)方法

    JS中不推薦使用的幾個(gè)函數(shù)方法

    隨著JavaScript技術(shù)的不斷進(jìn)步和語(yǔ)言的持續(xù)演化,一些曾經(jīng)備受矚目的功能逐漸變得不再那么有用,甚至被更現(xiàn)代、更高效的替代方案所取代,今天,我們就來(lái)一起探討幾個(gè)原生JavaScript中那些“不再那么有用”的功能與API,最好避免使用的幾個(gè)函數(shù)方法
    2025-01-01

最新評(píng)論