/**
*
* @param num
* @param precision
* @param separator
* @returns {*}
*=======================================================
* formatNumber(10000)="10,000"
* formatNumber(10000, 2)="10,000.00"
* formatNumber(10000.123456, 2)="10,000.12"
* formatNumber(10000.123456, 2, ' ')="10 000.12"
* formatNumber(.123456, 2, ' ')="0.12"
* formatNumber(56., 2, ' ')="56.00"
* formatNumber(56., 0, ' ')="56"
* formatNumber('56.')="56"
* formatNumber('56.a')=NaN
*=======================================================
*/
function formatNumber(num, precision, separator) {
var parts;
// 判断是否为数字
if (!isNaN(parseFloat(num)) && isFinite(num)) {
// 把类似 .5, 5. 之类的数据转化成0.5, 5, 为数据精度处理做准, 至于为什么
// 不在判断中直接写 if (!isNaN(num = parseFloat(num)) && isFinite(num))
// 是因为parseFloat有一个奇怪的精度问题, 比如 parseFloat(12312312.1234567119)
// 的值变成了 12312312.123456713
num = Number(num);
// 处理小数点位数
num = (typeof precision !== 'undefined' ? num.toFixed(precision) : num).toString();
// 分离数字的小数部分和整数部分
parts = num.split('.');
// 整数部分加[separator]分隔, 借用一个著名的正则表达式
parts[0] = parts[0].toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1' + (separator || ',')); return parts.join('.');
}
return NaN;
} /**
* 把数字转换成货币的格式
* @param decimals
* @param dec_point
* @param thousands_sep
* @returns {string}
*/
Number.prototype.format=function(decimals, dec_point, thousands_sep){
var num = (this + '')
.replace(/[^0-9+\-Ee.]/g, '');
var n = !isFinite(+num) ? 0 : +num,
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);
return '' + (Math.round(n * k) / k)
.toFixed(prec);
};
// Fix for IE parseFloat(0.55).toFixed(0) = 0;
s = (prec ? toFixedFix(n, prec) : '' + Math.round(n))
.split('.');
if (s[0].length > 3) {
s[0] = s[0].replace(/\B(?=(?:\d{3})+(?!\d))/g, sep);
}
if ((s[1] || '')
.length < prec) {
s[1] = s[1] || '';
s[1] += new Array(prec - s[1].length + 1)
.join('0');
}
return s.join(dec);
}

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. Web安全之跨站伪造请求(CSRF)

    CSRF简介 CSRF全称跨站伪造请求(Cross-site request forgery)也称为one click attack/session riding,还可以缩写为XSRF 通俗说就是利用 ...

  2. sleep()与wait()的区别

    ①sleep()实现线程阻塞的方法,我们称之为“线程睡眠”,方式是超时等待,怎么理解?就是sleep()通过传入“睡眠时间”作为方法的参数,时间一到就从“睡眠”中“醒来”: ②wait()方法实现线程 ...

  3. 如何使用webpack 打包图片

    最近在学习vue,需要用到webpack打包css,在webpack中文网https://www.webpackjs.com/里只有css的打包配置, 在编写css样式时,因为要引入 背景图片,打包时 ...

  4. HashMap 什么时候进行扩容呢

    HashMap扩容: 当HashMap中的元素越来越多的时候,碰撞的几率也就越来越高(因为数组的长度是固定的),所以为了提高查询的效率,就要对HashMap的数组进行扩容,数组扩容这个操作也会出现在A ...

  5. Assert(断言) 的用法

    Assert Assert是断言的意思,头文件为assert.h, assert是一个宏 功 能: 测试一个条件并可能使程序终止 用 法: void assert(int test); 在单元测试中经 ...

  6. 求教各路大神,Fillder的证书一直无法在手机上打开,请教怎么解决

    我跟足大神们的设置,软件是Fiddler4,手机是ios12.3.1. FD上该打勾的打勾了,该装证书的也装了,有帖子说重装证书和软件我也都试过,电脑也下了NET Framework 4.7_4.7. ...

  7. netty DelimiterBasedFrameDecoder

    netty server EchoServer package com.zhaowb.netty.ch5_1; import io.netty.bootstrap.ServerBootstrap; i ...

  8. ListControl 设置表格行高与字体

    设置行高: CImageList   m_l;  m_l.Create(1,18,TRUE|ILC_COLOR32,1,0);   listCtrl.SetImageList(&m_l,LVS ...

  9. nginx压力测试webbench

    下载压力测试工具webbench wget http://home.tiscali.cz/~cz210552/distfiles/webbench-1.5.tar.gz 安装依赖包 yum -y in ...

  10. 利用eclipse通过mybatis进行查询汉字字符时候无法显示结果,但是直接通过cmd窗口可以显示的解决方法

    将数据库配置文件中的url写成如下的形式就可以成功查询: url = "jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf8&quo ...