1. /**
  2. *
  3. * @param num
  4. * @param precision
  5. * @param separator
  6. * @returns {*}
  7. *=======================================================
  8. * formatNumber(10000)="10,000"
  9. * formatNumber(10000, 2)="10,000.00"
  10. * formatNumber(10000.123456, 2)="10,000.12"
  11. * formatNumber(10000.123456, 2, ' ')="10 000.12"
  12. * formatNumber(.123456, 2, ' ')="0.12"
  13. * formatNumber(56., 2, ' ')="56.00"
  14. * formatNumber(56., 0, ' ')="56"
  15. * formatNumber('56.')="56"
  16. * formatNumber('56.a')=NaN
  17. *=======================================================
  18. */
  19. function formatNumber(num, precision, separator) {
  20. var parts;
  21. // 判断是否为数字
  22. if (!isNaN(parseFloat(num)) && isFinite(num)) {
  23. // 把类似 .5, 5. 之类的数据转化成0.5, 5, 为数据精度处理做准, 至于为什么
  24. // 不在判断中直接写 if (!isNaN(num = parseFloat(num)) && isFinite(num))
  25. // 是因为parseFloat有一个奇怪的精度问题, 比如 parseFloat(12312312.1234567119)
  26. // 的值变成了 12312312.123456713
  27. num = Number(num);
  28. // 处理小数点位数
  29. num = (typeof precision !== 'undefined' ? num.toFixed(precision) : num).toString();
  30. // 分离数字的小数部分和整数部分
  31. parts = num.split('.');
  32. // 整数部分加[separator]分隔, 借用一个著名的正则表达式
  33. parts[0] = parts[0].toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1' + (separator || ','));
  34.  
  35. return parts.join('.');
  36. }
  37. return NaN;
  38. }
  39.  
  40. /**
  41. * 把数字转换成货币的格式
  42. * @param decimals
  43. * @param dec_point
  44. * @param thousands_sep
  45. * @returns {string}
  46. */
  47. Number.prototype.format=function(decimals, dec_point, thousands_sep){
  48. var num = (this + '')
  49. .replace(/[^0-9+\-Ee.]/g, '');
  50. var n = !isFinite(+num) ? 0 : +num,
  51. prec = !isFinite(+decimals) ? 0 : Math.abs(decimals),
  52. sep = (typeof thousands_sep === 'undefined') ? ',' : thousands_sep,
  53. dec = (typeof dec_point === 'undefined') ? '.' : dec_point,
  54. s = '',
  55. toFixedFix = function(n, prec) {
  56. var k = Math.pow(10, prec);
  57. return '' + (Math.round(n * k) / k)
  58. .toFixed(prec);
  59. };
  60. // Fix for IE parseFloat(0.55).toFixed(0) = 0;
  61. s = (prec ? toFixedFix(n, prec) : '' + Math.round(n))
  62. .split('.');
  63. if (s[0].length > 3) {
  64. s[0] = s[0].replace(/\B(?=(?:\d{3})+(?!\d))/g, sep);
  65. }
  66. if ((s[1] || '')
  67. .length < prec) {
  68. s[1] = s[1] || '';
  69. s[1] += new Array(prec - s[1].length + 1)
  70. .join('0');
  71. }
  72. return s.join(dec);
  73. }

js格式化数字为金额的更多相关文章

  1. js格式化数字和金额

    格式化数字,格式化金额: function number_format(number, decimals, dec_point, thousands_sep) { /* * 参数说明: * numbe ...

  2. js格式化数字,金额按千位逗号分隔,负号用括号

    // 返回数字 function removeFormatMoney(s) { s = s.toString().replace("(","-").replac ...

  3. vue js格式化数字为金额格式

    /** * @description 格式化金额 * @param number:要格式化的数字 * @param decimals:保留几位小数 默认0位 * @param decPoint:小数点 ...

  4. js 格式化数字,格式化金额:

    js 格式化数字,格式化金额: function number_format(number, decimals, dec_point, thousands_sep) { /* * 参数说明: * nu ...

  5. js格式化输入框内金额、银行卡号[转]

    这篇文章主要介绍了js格式化输入框内金额.银行卡号,采用“keyup”事件处理格式化,每4位数一组中间空格隔开,如何格式化输入框内金额.银行卡号,需要了解的朋友可以参考一下 我们在项目中经常遇到需要格 ...

  6. JavaScript 格式化数字、金额、千分位、保留几位小数、舍入舍去…

    JavaScript 格式化数字.金额.千分位.保留几位小数.舍入舍去… 类库推荐 1. Numeral.js 一个用于格式化和操作数字的JavaScript库.数字可以被格式化为货币,百分比,时间, ...

  7. JS格式化数字金额用逗号隔开保留两位小数

    JS格式化金额,正则方式修改. /** * 格式化金额 * @param {[type]} v [要转换的数字] * @param {[type]} len [小数点位数,默认2位] * @param ...

  8. js格式化数字 金额按千位逗号分隔

    // 返回数字 function removeFormatMoney(s) { return parseFloat(s.replace(/[^\d\.-]/g, "")); } / ...

  9. 自定义编写js格式化数字的函数

    在处理网页的时候,有时候会需要显示很长的数字,但是当数字的长度比较长的时候,就很难看一个数字到底是多大.这种情况下,一些网站在处理数字的时候,当数字的长度大于3个时,就用逗号把他们分开,这是一个比较常 ...

随机推荐

  1. bzoj 3579: 破冰派对

    题意: 给你一个图,问你有多少个方案把他分成连个新的图.使得一个图是一个团,另外一个是独立集 一些闲话: 以前做过一次这个题..当时听说爆搜可以过,就无脑莽过去了.. 也没有思考为什么爆搜能过,或者有 ...

  2. linux命令重定向>、>>、 1>、 2>、 1>>、 2>>、 <(转)

    原文章地址:https://www.cnblogs.com/piperck/p/6219330.html >和>>: 他们俩其实唯一的区别就是>是重定向到一个文件,>&g ...

  3. axios调用接口

    axios调用接口 1. 按照axiosnpm install --save-dev axios2.在main.js 引入axios, 设置全局属性$http 指向axios main.js impo ...

  4. windows下 Mysql 8.0.x 数据库简单的导出和导入!!!

    1.首先需要进入到mysql安装目录下的bin目录,执行cmd进入命令窗口. 2.导出(导出某个数据库,也可以针对某张表导出)2.1导出数据结构以及数据的命令: mysqldump -u root - ...

  5. js里json和eval()

    JSON * - JS中的对象只有JS自己认识,其他的语言都不认识 * - JSON就是一个特殊格式的字符串,这个字符串可以被任意的语言所识别, * 并且可以转换为任意语言中的对象,JSON在开发中主 ...

  6. RabbitMQ探索之路(二):RabbitMQ在Linux下的安装

    引言 消息队列现在在互联网项目中应用的还是非常多的,在接下来的博客中小编会深入的了解MQ的实现过程,在此博客中将介绍如何在centos7下面安装MQ以及遇到的问题. 第一步:安装Erlang 因为ra ...

  7. C++——类的继承(派生)

    类的继承就是子类可以拥有父类的成员变量和成员函数 //public 修饰的成员变量 方法 在类的内部 类的外部都能使用//protected: 修饰的成员变量方法,在类的内部使用 ,在继承的子类中可用 ...

  8. JavaScript中的表单编程

    表单编程 1获取表单相关信息 1.什么是表单元素 1.什么是表单元素 在H TML中表单就是指form标签,它的作用是将用户输入或选择的数据提交给指定的服务器 2.如何获取表单元素 <form ...

  9. Unable to find explicit activity class报错问题解决方法

    转:http://hi.baidu.com/mz_mz/item/f5672ad814e1ce30e2108f69 1.首先查看是否在已经在AndroidMainfest.xml中添加了你的Activ ...

  10. VS2010-MFC(Ribbon界面开发:创建Ribbon样式的应用程序框架)

    转自:http://www.jizhuomi.com/software/251.html 上一节讲了GDI对象之画刷CBrush,至此图形图像的入门知识就讲完了.从本节开始将为大家带来Ribbon界面 ...