当前位置:文档之家› 金额显示千分位知识点整理

金额显示千分位知识点整理

比如输入:1000000,则显示为1,000,000(或者是保留3位小数:1,000,000.000)知识点:
1)JavaScript parseFloat() 函数:
定义:parseFloat() 函数可解析一个字符串,并返回一个浮点数
语法:parseFloat(string)
a)parseFloat 将它的字符串参数解析成为浮点数并返回;
b)如果在解析过程中遇到了正负号(+ 或-)、数字(0-9)、小数点,或者科学记数法中的指数(e 或E)以外
的字符,则它会忽略该字符以及之后的所有字符,返回当前已经解析到的浮点数;
c)参数字符串首位的空白符会被忽略;
注意:如果参数字符串的第一个字符不能被解析成为数字,则parseFloat 返回NaN。

提示:您可以通过调用isNaN 函数来判断parseFloat 的返回结果是否是NaN。

如果让NaN 作为了任意数学运算的操作数,则运算结果必定也是NaN。

parseFloat("10") 10
parseFloat("10.00") 10
parseFloat("10.33") 10.33
parseFloat("34 45 66") 34
parseFloat(" 60 ") 60
parseFloat("40 years") 40
isNaN(parseFloat("40 years")) false
parseFloat("He was 40") NaN
isNaN(parseFloat("He was 40")) true
2)JavaScript toFixed() 方法:
定义:toFixed() 方法可把Number 四舍五入为指定小数位数的数字。

语法:NumberObject.toFixed(num),num参数必需,规定小数的位数,是0 ~ 20 之间的值,包括0 和20,有些实
现可以支持更大的数值范围。

如果省略了该参数,将用0 代替。

如下:把数字舍入为仅有一位小数的数字:
1var num =13.36;2 alert(num.toFixed(1)); 13.4
3)JavaScript isNaN() 函数:
定义:isNaN() 函数用于检查其参数是否是非数字值。

语法:isNaN(x),如果x 是特殊的非数字值NaN(或者能被转换为这样的值),返回的值就是true。

如果x 是其他值,则返回false。

提示:isNaN() 函数通常用于检测parseFloat() 和parseInt() 的结果,以判断它们表示的是否是合法的数字。

当然也可以用isNaN() 函数来检测算数错误,比如用0 作除数的情况
4)JavaScript reverse() 方法:
定义:reverse() 方法用于颠倒数组中元素的顺序
语法:array.reverse()
5)JavaScript split() 方法:
定义:split() 方法用于把一个字符串分割成字符串数组
语法:stringObject.split(separator,howmany)
参数separator:必需。

字符串或正则表达式,从该参数指定的地方分割stringObject;
参数howmany:可选。

该参数可指定返回的数组的最大长度。

如果设置了该参数,
返回的子串不会多于这个参数指定的数组。

如果没有设置该参数,整个字符串都会被分割,不考虑它的长度;
注释:如果把空字符串("") 用作 separator,那么stringObject 中的每个字符之间都
会被分割。

注释:String.split() 执行的操作与Array.join执行的操作是相反的
宝典在这
6)JavaScript join() 方法:
定义:join() 方法用于把数组中的所有元素放入一个字符串
语法:arrayObject.join(separator)
参数separator:可选。

指定要使用的分隔符。

如果省略该参数,则使用逗号作为分
隔符。

提示:join("")则意味将数组拼接成字符串
需求:
input框输入金额,要求按千分位显示并四舍五入且保留3位小数,其中要求只能输入大于的0的数字,小数位不作限制
分析:
1、四舍五入且保留指定小数位:toFixed() 方法
2、输入大于0的数字且输入时小数位不做限制:正则表达式校验
1)正整数部分(>0整数):[1-9][0-9]*表示以1-9任意一个数开头,*表示出现0次或多次;
2)含小数部分(注意不能是0.0000...):
[0]\.[0-9]{0,2}[1-9]\d*|[1-9][0-9]*\.\d*表示整数位0的小数保留3位四舍
五入后不能是0.000,整数不为0的都可以
3、整数部分加千分位:
1)先把经过toFixed()处理后,利用split(".")将整数和小数分开并分包存储;
2)整数部分加千分位:可以从低位→高位,每隔3位插入逗号,还有注意最高位不能以逗号开头;
2.1)利用split("")将整数部分切割成数组;
2.2)利用reverse()将切割后数组颠倒;
2.3)遍历数组:数组下标+1和3求余(数组下标从0开始)来重新拼接字符串或者push给新数组;
2.4)再利用reverse()颠倒新数组,利用join("")拼接;
4、字符串拼接:整数部分加千分位+"."+小数部分;
<input class="base-form-input " id="mny" type="text" onchange="numChange(th is.value)" value="<fmt:formatNumber type='number' value='' pattern="#,##0.0 00" maxFractionDigits='3'/>">
javaScript脚本:(黄色阴影部分需要根据实际情况修改)
//光标离开输入的金额四舍五入并保留3位小数
$("#mny").blur(function(){//输入123456.7890
var obj = this.value;
var mnyReg =
/^([1-9][0-9]*|(([0]\.[0-9]{0,2}[1-9]\d*|[1-9][0-9]*\.\d* )))$/;
if(!(mnyReg.test(obj))){
layer.tips("请输入正确的资金",
$(this).attr("id"),{time:1000});
return;
}
var n = 3;//保留得小数位
obj = parseFloat(obj).toFixed(n); //obj=123456.789
var left = obj.split(".")[0].split("").reverse();
//left = ["6","5","4","3","2","1"]
var right = obj.split(".")[1]; //right = "789"
var total = new Array();
for (i = 0; i < left.length; i++) {
total.push(left[i]);
if((i + 1) % 3 == 0 && (i + 1) != left.length){ total.push(",");
}
} //total = ["6","5","4",",","3","2","1"] $("#mny").val(total.reverse().join("") + "." + right); })
//光标进入,去除金额千分位
$("#mny").focus(function(){
var oldMny = this.value.replace(/,/g, '');
if(oldMny.indexOf(".")>0){
oldMny = oldMny.replace(/0+?$/,"");
oldMny = oldMny.replace(/[.]$/,"");
}
this.value = oldMny;
})。

相关主题