真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

JavaScript如何格式化數(shù)字、金額、千分位、保留幾位小數(shù)、舍入舍去

小編給大家分享一下JavaScript如何格式化數(shù)字、金額、千分位、保留幾位小數(shù)、舍入舍去,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

創(chuàng)新互聯(lián)建站-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比溪湖網(wǎng)站開(kāi)發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式溪湖網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋溪湖地區(qū)。費(fèi)用合理售后完善,10年實(shí)體公司更值得信賴。

前端開(kāi)發(fā)中經(jīng)常會(huì)碰到用 JavaScript?格式化數(shù)字,最最常見(jiàn)的是格式化金額,一般格式化金額需要千分位分隔,保留2位小數(shù)等等。

簡(jiǎn)單的功能函數(shù)

類似的代碼網(wǎng)上有很多:

/**
 * 將數(shù)值四舍五入(保留2位小數(shù))后格式化成金額形式
 *
 * @param num 數(shù)值(Number或者String)
 * @return 金額格式的字符串,如'1,234,567.45'
 * @type String
 */
function formatCurrency(num) {
  num = num.toString().replace(/\$|\,/g,'');
  if(isNaN(num))
    num = "0";
  sign = (num == (num = Math.abs(num)));
  num = Math.floor(num*100+0.50000000001);
  cents = num%100;
  num = Math.floor(num/100).toString();
  if(cents<10)
  cents = "0" + cents;
  for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
  num = num.substring(0,num.length-(4*i+3))+','+
  num.substring(num.length-(4*i+3));
  return (((sign)?'':'-') + num + '.' + cents);
}

或者

function fmoney(s, n) {
  /*
   * 參數(shù)說(shuō)明:
   * s:要格式化的數(shù)字
   * n:保留幾位小數(shù)
   * */
  n = n > 0 && n <= 20 ? n : 2;
  s = parseFloat((s + "").replace(/[^\d\.-]/g, "")).toFixed(n) + "";
  var l = s.split(".")[0].split("").reverse(),
    r = s.split(".")[1];
  t = "";
  for (i = 0; i < l.length; i++) {
    t += l[i] + ((i + 1) % 3 == 0 && (i + 1) != l.length ? "," : "");
  }
  return t.split("").reverse().join("") + "." + r;
}
//調(diào)用
fmoney(9.7,2);//9.70
fmoney('12345.675910', 3);//12,345.676

更加完善的功能函數(shù)

這些代碼基本能很好的運(yùn)行。不過(guò)關(guān)系到經(jīng)濟(jì)利益的時(shí)候,還要考慮舍去或者舍入幾厘。大家懂的,每個(gè)用戶幾厘錢可能帶來(lái)巨大的經(jīng)濟(jì)收益。就比如說(shuō)收手續(xù)費(fèi),如果一筆手續(xù)費(fèi)計(jì)算出來(lái)是 3.4521 元,精確到分一般都會(huì)收 3.46 元。當(dāng)然如果是付出去,那可能就是直接舍去了,一般會(huì)計(jì)算為 3.45 元。

以前收集過(guò)類似方法,不過(guò)在使用的時(shí)候會(huì)有BUG,JS 浮點(diǎn)型計(jì)算的精度問(wèn)題。所以抽時(shí)間修復(fù)了一下:

function number_format(number, decimals, dec_point, thousands_sep,roundtag) {
  /*
  * 參數(shù)說(shuō)明:
  * number:要格式化的數(shù)字
  * decimals:保留幾位小數(shù)
  * dec_point:小數(shù)點(diǎn)符號(hào)
  * thousands_sep:千分位符號(hào)
  * roundtag:舍入?yún)?shù),默認(rèn) "ceil" 向上取,"floor"向下取,"round" 四舍五入
  * */
  number = (number + '').replace(/[^0-9+-Ee.]/g, '');
  roundtag = roundtag || "ceil"; //"ceil","floor","round"
  var n = !isFinite(+number) ? 0 : +number,
    prec = !isFinite(+decimals) ? 0 : Math.abs(decimals),
    sep = (typeof thousands_sep === 'undefined') ? ',' : thousands_sep,
    dec = (typeof dec_point === 'undefined') ? '.' : dec_point,
    s = '',
    toFixedFix = function (n, prec) {
 
      var k = Math.pow(10, prec);
      console.log();
 
      return '' + parseFloat(Math[roundtag](parseFloat((n * k).toFixed(prec*2))).toFixed(prec*2)) / k;
    };
  s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)).split('.');
  var re = /(-?\d+)(\d{3})/;
  while (re.test(s[0])) {
    s[0] = s[0].replace(re, "$1" + sep + "$2");
  }
 
  if ((s[1] || '').length < prec) {
    s[1] = s[1] || '';
    s[1] += new Array(prec - s[1].length + 1).join('0');
  }
  return s.join(dec);
}
console.log(number_format(2, 2, ".", ","))//"2.00"
console.log(number_format(3.7, 2, ".", ","))//"3.70"
console.log(number_format(3, 0, ".", ",")) //"3"
console.log(number_format(9.0312, 2, ".", ","))//"9.03"
console.log(number_format(9.00, 2, ".", ","))//"9.00"
console.log(number_format(39.715001, 2, ".", ",", "floor")) //"39.71"
console.log(number_format(9.7, 2, ".", ","))//"9.70"
console.log(number_format(39.7, 2, ".", ","))//"39.70"
console.log(number_format(9.70001, 2, ".", ","))//"9.71"
console.log(number_format(39.70001, 2, ".", ","))//"39.71"
console.log(number_format(9996.03, 2, ".", ","))//"9996.03"
console.log(number_format(1.797, 3, ".", ",", "floor"))//"1.797"

參數(shù)有點(diǎn)多,你可以根據(jù)你自己的需求去修改。

推薦的類庫(kù) Numeral.js 和 accounting.js

Numeral.js

一個(gè)用于格式化和操作數(shù)字的JavaScript庫(kù)。數(shù)字可以被格式化為貨幣,百分比,時(shí)間,幾個(gè)小數(shù)位數(shù),千分位等等。 您也可以隨時(shí)創(chuàng)建自定義格式。

官網(wǎng)及文檔:http://numeraljs.com/

GitHub:https://github.com/adamwdraper/Numeral-js

accounting.js

一個(gè)輕量級(jí)的JavaScript庫(kù),用于格式化數(shù)字,金額和貨幣等。

以上是“JavaScript如何格式化數(shù)字、金額、千分位、保留幾位小數(shù)、舍入舍去”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!


本文題目:JavaScript如何格式化數(shù)字、金額、千分位、保留幾位小數(shù)、舍入舍去
新聞來(lái)源:http://weahome.cn/article/gghcpi.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部