在js里,数据(123456.002233)显示为123,456.00 例如一个金额字段,数据表里保存的是:123456.002233,前台列表里显示123,456.00,编辑窗口里显示123456.00。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Cstr(rs("数据")*1000000000/1000000000)试试看~~~~ 不行的,要写一个javascript函数,来处理:输入:123456.002233输出:123,456.00(保留两位小数;整数部分,每三段加一个逗号) 我这里有一些金额处理的js,希望对你有用var Nums = new Array("零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"); var Digits = new Array("", "拾", "佰", "仟"); var Units = new Array("", "万", "亿", "万亿","仟兆"); /*** 检查字符串是否为合法的金额* @param {String} 字符串* @return {bool} 是否为合法金额*/function isMoney(s) { var isMoney = RegExp(/^[0-9]*\.?[0-9]{0,2}$/); return ( isMoney.test(s) );}/*** 判断输入变量是否是浮点数* @param {String} 要检查的变量值* @return {bool} 是否为浮点数*/function isFloat( s ){ var isFloat = RegExp(/^([0-9]+(\.+))[0-9]+$/); return ( isFloat.test(s) );}/*** 检查指定的input中输入的金额是否合法,如果合法返回金额,否则返回null* @param {String} 要检查的input的id*/function getMoney(inputName){ var money = document.getElementById(inputName).value; if ( money !=null && money.length>0 ) { return removeComma( money ); }else{ return null; }}/*** 检查指定的input中输入的金额是否合法,并进行显示转换* @param {String} 要检查的input的id*/function checkMoney(inputName){ var input = document.getElementById(inputName); if ( isEmpty( input.value ) ) { return false; } var testMoney = removeComma( input.value ); if ( isMoney( testMoney ) ) { if(testMoney.length>1){ while(testMoney.charAt(0)=='0'&&testMoney.charAt(1)!='.'){ testMoney = testMoney.substring(1,testMoney.length); } } input.value = toCashWithCommaAndDot( testMoney ); return true; }else{ input.value = ""; input.focus(); return false; }} /*** 转换为中文金额表示* @param {String} 要转换的金额字符串* @return {String} 转换后的金额字符串*/function toChineseCash( cash ){ if ( cash == null || cash.length == 0 ) { return ''; } var noCommaCash = removeComma(cash); if ( parseFloat(cash) == 0 ) { return ''; } if( !isFloat( noCommaCash ) ) { return convertIntegerToChineseCash(noCommaCash); } var dotIndex = noCommaCash.indexOf('.'); var integerCash = noCommaCash.substring( 0, dotIndex ); var decimalCash = noCommaCash.substring( dotIndex + 1 ); var str = convertIntegerToChineseCash(integerCash); var str1 = convertDecimalToChineseCash(decimalCash); if(str!=""){ if(str1.length == 2){ if(str1.substring(1,2) == '分'){ str1 = '零'+str1; } } } if(str1.length == 2){ if(str1.substring(1,2) == '角'){ str1 = str1+'整'; } } return str+str1;}/*** 为金额添加,分割符* @param {String} 要转换的金额字符串* @return {String} 转换后的金额字符串*/function toCashWithComma( cash ){ while( cash.charAt(0) == '0' ) { cash = cash.substr(1); } if( !isFloat( cash ) ) return addComma(cash); var dotIndex = cash.indexOf('.'); var integerCash = cash.substring( 0, dotIndex ); var decimalCash = cash.substring( dotIndex ); return addComma(integerCash)+decimalCash;}/*** 为金额添加,分割符和.分割符* @param {String} 要转换的金额字符串* @return {String} 转换后的金额字符串*/function toCashWithCommaAndDot( cash ){ var temp = toCashWithComma( cash ); if ( temp.length == 0 ) { return "0.00"; } var dotPos = temp.indexOf("."); if ( dotPos < 0 ) { return temp+'.00'; } if ( dotPos == 0 ) { temp = '0' + temp; dotPos = temp.indexOf("."); } if ( dotPos == temp.length-2) { return temp + '0'; } if ( dotPos == temp.length-1) { return temp + '00'; } return temp;}function convertIntegerToChineseCash(cash){ if ( cash == "0" ) return ""; var S = ""; //返回值 var p = 0; //字符位置指针 var m = cash.length % 4; //取模 // 四位一组得到组数 var k = (m > 0 ? Math.floor(cash.length / 4) + 1 : Math.floor(cash.length / 4)); // 外层循环在所有组中循环 // 从左到右 高位到低位 四位一组 逐组处理 // 每组最后加上一个单位: "[万亿]","[亿]","[万]" for (var i = k; i > 0; i--) { var L = 4; if (i == k && m != 0) { L = m; } // 得到一组四位数 最高位组有可能不足四位 var s = cash.substring(p, p + L); var l = s.length; // 内层循环在该组中的每一位数上循环 从左到右 高位到低位 for (var j = 0;j < l;j++) { var n = parseInt(s.substring(j, j+1)); if (n == 0) { if ((j < l - 1) && (parseInt(s.substring(j + 1, j + 1+ 1)) > 0) //后一位(右低) && S.substring(S.length-1,S.length) != Nums[n]) { S += Nums[n]; } } else { //处理 1013 一千零"十三", 1113 一千一百"一十三" if (!(n == 1 && (S.substring(S.length-1,S.length) == Nums[0] | S.length == 0) && j == l - 2)) { S += Nums[n]; } S += Digits[l - j - 1]; } } p += L; // 每组最后加上一个单位: [万],[亿] 等 if (i < k)//不是最高位的一组 { if (parseInt(s)!= 0) { //如果所有 4 位不全是 0 则加上单位 [万],[亿] 等 S += Units[i - 1]; } } else { //处理最高位的一组,最后必须加上单位 S += Units[i - 1]; } } var han=''; for(var i=0;i<S.length;i++){ var j = S.substring(i,i+1); if(j == '拾'){ if(i!=0){ var x = S.substring(i-1,i); if(x=='零'){ j = '壹拾'; } }else{ j = '壹拾'; } } han = han + j; } return han+"元";}function convertDecimalToChineseCash( cash ){ var returnCash = ""; if ( cash == "00" ) returnCash = "整"; else { for( var i = 0;i < cash.length; i++ ) { if( i >= 2 ) break; var intValue = parseInt(cash.charAt(i)); switch( i ) { case 0: if ( intValue != 0 ) returnCash += Nums[intValue]+"角"; break; case 1: if(intValue == 0){ break; } returnCash += Nums[intValue]+"分"; break; default: break; } } } return returnCash; }function addComma(str) { if (str.length > 3) { var mod = str.length % 3; var output = (mod > 0 ? (str.substring(0,mod)) : ''); for (i=0 ; i < Math.floor(str.length / 3); i++) { if ((mod == 0) && (i == 0)) output += str.substring(mod+ 3 * i, mod + 3 * i + 3); else output += ',' + str.substring(mod + 3 * i, mod + 3 * i + 3); } return (output); } else return str;}function removeComma(str){ return str.replace(new RegExp('\,',["g"]),'');}/*** 为金额指定格式* @param {num} 要转换的金额字符串* @param {pattern} 指定格式 '#,##0.00'* @return {String} 转换后的金额字符串*/function formatNumber(num,pattern){ var strarr = num?num.toString().split('.'):['0']; var fmtarr = pattern?pattern.split('.'):['']; var retstr=''; // 整数部分 var str = strarr[0]; var fmt = fmtarr[0]; var i = str.length-1; var comma = false; for(var f=fmt.length-1;f>=0;f--){ switch(fmt.substr(f,1)){ case '#': if(i>=0 ) retstr = str.substr(i--,1) + retstr; break; case '0': if(i>=0) retstr = str.substr(i--,1) + retstr; else retstr = '0' + retstr; break; case ',': comma = true; retstr=','+retstr; break; } } if(i>=0){ if(comma){ var l = str.length; for(;i>=0;i--){ retstr = str.substr(i,1) + retstr; if(i>0 && ((l-i)%3)==0) retstr = ',' + retstr; } } else retstr = str.substr(0,i+1) + retstr; } retstr = retstr+'.'; // 处理小数部分 str=strarr.length>1?strarr[1]:''; fmt=fmtarr.length>1?fmtarr[1]:''; i=0; for(var f=0;f<fmt.length;f++){ switch(fmt.substr(f,1)){ case '#': if(i<str.length) retstr+=str.substr(i++,1); break; case '0': if(i<str.length) retstr+= str.substr(i++,1); else retstr+='0'; break; } } return retstr.replace(/^,+/,'').replace(/\.$/,''); } 你可以写一个方法,用String.spilt(“.”)取到小数点后两位,在加上.前面的字符串-->123456.00.前面的字符串123456/1000=123 123+“,”,123456%1000=456 123,+456-->123,456 谢了,我先保存这些js函数。to:xiaozhuangfeng,能否有一个比较全面的函数来处理。用java或js都可。 写了个函数,lz看下能不能用。。function addComma(num) { var inter = Math.round(parseFloat(num) * 100); var temp = ((inter / 100) + '').split('.'); if (temp.length == 1) { temp[1] = '00'; } var value = temp[0].slice(-3), count = 0; if (temp[0].length > 3) { for (var i = temp[0].length - 3, count = i; i - 2 > 0; i = i - 2){ value = temp[0].substr(i - 2, 3) + ',' + value; count = i; } } if (count > 0) { value = temp[0].slice(0, count) + ',' + value; } return value + '.' + temp[1]; } ex:var str = '123123123456.002233';str = str.replace(/(\d)(?=(?:\d{3})+\.)/g,'$1,');alert(str); checkbox 只有一个复选框 选中保存值为1 没有选中就是0 怎么实现 document.body.clientLeft 是什么意思 求一个鼠标经过与集焦文本框的效果? js问题,实在没有办法了。 input中值得判断 简单问题~先来先拿分,FF和IE兼容性 求助:vbscript如何转为javascript 150分求解,关于远程提交 拜求自动填写 js如何批量修改gridview中一列控件的值?在线求解 有关js对象数组排序问题 extjs3.0二周都解决不了的问题,老师也不会,苦求高手解脱,谢谢!
输入:123456.002233
输出:123,456.00(保留两位小数;整数部分,每三段加一个逗号)
var Digits = new Array("", "拾", "佰", "仟");
var Units = new Array("", "万", "亿", "万亿","仟兆"); /**
* 检查字符串是否为合法的金额
* @param {String} 字符串
* @return {bool} 是否为合法金额
*/
function isMoney(s)
{
var isMoney = RegExp(/^[0-9]*\.?[0-9]{0,2}$/);
return ( isMoney.test(s) );
}/**
* 判断输入变量是否是浮点数
* @param {String} 要检查的变量值
* @return {bool} 是否为浮点数
*/
function isFloat( s )
{
var isFloat = RegExp(/^([0-9]+(\.+))[0-9]+$/);
return ( isFloat.test(s) );
}/**
* 检查指定的input中输入的金额是否合法,如果合法返回金额,否则返回null
* @param {String} 要检查的input的id
*/
function getMoney(inputName)
{
var money = document.getElementById(inputName).value;
if ( money !=null && money.length>0 )
{
return removeComma( money );
}else{
return null;
}
}/**
* 检查指定的input中输入的金额是否合法,并进行显示转换
* @param {String} 要检查的input的id
*/
function checkMoney(inputName)
{
var input = document.getElementById(inputName);
if ( isEmpty( input.value ) )
{
return false;
}
var testMoney = removeComma( input.value );
if ( isMoney( testMoney ) )
{
if(testMoney.length>1){
while(testMoney.charAt(0)=='0'&&testMoney.charAt(1)!='.'){
testMoney = testMoney.substring(1,testMoney.length);
}
}
input.value = toCashWithCommaAndDot( testMoney );
return true;
}else{
input.value = "";
input.focus();
return false;
}
} /**
* 转换为中文金额表示
* @param {String} 要转换的金额字符串
* @return {String} 转换后的金额字符串
*/
function toChineseCash( cash )
{
if ( cash == null || cash.length == 0 )
{
return '';
}
var noCommaCash = removeComma(cash);
if ( parseFloat(cash) == 0 )
{
return '';
}
if( !isFloat( noCommaCash ) )
{
return convertIntegerToChineseCash(noCommaCash);
}
var dotIndex = noCommaCash.indexOf('.');
var integerCash = noCommaCash.substring( 0, dotIndex );
var decimalCash = noCommaCash.substring( dotIndex + 1 );
var str = convertIntegerToChineseCash(integerCash);
var str1 = convertDecimalToChineseCash(decimalCash);
if(str!=""){
if(str1.length == 2){
if(str1.substring(1,2) == '分'){
str1 = '零'+str1;
}
}
}
if(str1.length == 2){
if(str1.substring(1,2) == '角'){
str1 = str1+'整';
}
}
return str+str1;
}/**
* 为金额添加,分割符
* @param {String} 要转换的金额字符串
* @return {String} 转换后的金额字符串
*/
function toCashWithComma( cash )
{
while( cash.charAt(0) == '0' )
{
cash = cash.substr(1);
}
if( !isFloat( cash ) )
return addComma(cash);
var dotIndex = cash.indexOf('.');
var integerCash = cash.substring( 0, dotIndex );
var decimalCash = cash.substring( dotIndex );
return addComma(integerCash)+decimalCash;
}/**
* 为金额添加,分割符和.分割符
* @param {String} 要转换的金额字符串
* @return {String} 转换后的金额字符串
*/
function toCashWithCommaAndDot( cash )
{
var temp = toCashWithComma( cash );
if ( temp.length == 0 )
{
return "0.00";
}
var dotPos = temp.indexOf(".");
if ( dotPos < 0 )
{
return temp+'.00';
}
if ( dotPos == 0 )
{
temp = '0' + temp;
dotPos = temp.indexOf(".");
}
if ( dotPos == temp.length-2)
{
return temp + '0';
}
if ( dotPos == temp.length-1)
{
return temp + '00';
}
return temp;
}function convertIntegerToChineseCash(cash)
{
if ( cash == "0" )
return "";
var S = ""; //返回值
var p = 0; //字符位置指针
var m = cash.length % 4; //取模 // 四位一组得到组数
var k = (m > 0 ? Math.floor(cash.length / 4) + 1 : Math.floor(cash.length / 4));
// 外层循环在所有组中循环
// 从左到右 高位到低位 四位一组 逐组处理
// 每组最后加上一个单位: "[万亿]","[亿]","[万]"
for (var i = k; i > 0; i--)
{
var L = 4;
if (i == k && m != 0)
{
L = m;
}
// 得到一组四位数 最高位组有可能不足四位
var s = cash.substring(p, p + L);
var l = s.length; // 内层循环在该组中的每一位数上循环 从左到右 高位到低位
for (var j = 0;j < l;j++)
{
var n = parseInt(s.substring(j, j+1));
if (n == 0)
{
if ((j < l - 1) && (parseInt(s.substring(j + 1, j + 1+ 1)) > 0) //后一位(右低)
&& S.substring(S.length-1,S.length) != Nums[n])
{
S += Nums[n];
}
}
else
{
//处理 1013 一千零"十三", 1113 一千一百"一十三"
if (!(n == 1 && (S.substring(S.length-1,S.length) == Nums[0] | S.length == 0) && j == l - 2))
{
S += Nums[n];
}
S += Digits[l - j - 1];
}
}
p += L;
// 每组最后加上一个单位: [万],[亿] 等
if (i < k)//不是最高位的一组
{
if (parseInt(s)!= 0)
{
//如果所有 4 位不全是 0 则加上单位 [万],[亿] 等
S += Units[i - 1];
}
}
else
{
//处理最高位的一组,最后必须加上单位
S += Units[i - 1];
}
}
var han='';
for(var i=0;i<S.length;i++){
var j = S.substring(i,i+1);
if(j == '拾'){
if(i!=0){
var x = S.substring(i-1,i);
if(x=='零'){
j = '壹拾';
}
}else{
j = '壹拾';
}
}
han = han + j;
}
return han+"元";
}function convertDecimalToChineseCash( cash )
{
var returnCash = "";
if ( cash == "00" )
returnCash = "整";
else
{
for( var i = 0;i < cash.length; i++ )
{
if( i >= 2 )
break;
var intValue = parseInt(cash.charAt(i));
switch( i )
{
case 0:
if ( intValue != 0 )
returnCash += Nums[intValue]+"角";
break;
case 1:
if(intValue == 0){
break;
}
returnCash += Nums[intValue]+"分";
break;
default:
break;
}
}
}
return returnCash;
}function addComma(str) {
if (str.length > 3)
{
var mod = str.length % 3;
var output = (mod > 0 ? (str.substring(0,mod)) : '');
for (i=0 ; i < Math.floor(str.length / 3); i++) {
if ((mod == 0) && (i == 0))
output += str.substring(mod+ 3 * i, mod + 3 * i + 3);
else
output += ',' + str.substring(mod + 3 * i, mod + 3 * i + 3);
}
return (output);
}
else return str;
}function removeComma(str)
{
return str.replace(new RegExp('\,',["g"]),'');
}/**
* 为金额指定格式
* @param {num} 要转换的金额字符串
* @param {pattern} 指定格式 '#,##0.00'
* @return {String} 转换后的金额字符串
*/
function formatNumber(num,pattern){
var strarr = num?num.toString().split('.'):['0'];
var fmtarr = pattern?pattern.split('.'):[''];
var retstr='';
// 整数部分
var str = strarr[0];
var fmt = fmtarr[0];
var i = str.length-1;
var comma = false;
for(var f=fmt.length-1;f>=0;f--){
switch(fmt.substr(f,1)){
case '#':
if(i>=0 ) retstr = str.substr(i--,1) + retstr;
break;
case '0':
if(i>=0) retstr = str.substr(i--,1) + retstr;
else retstr = '0' + retstr;
break;
case ',':
comma = true;
retstr=','+retstr;
break;
}
}
if(i>=0){
if(comma){
var l = str.length;
for(;i>=0;i--){
retstr = str.substr(i,1) + retstr;
if(i>0 && ((l-i)%3)==0) retstr = ',' + retstr;
}
}
else retstr = str.substr(0,i+1) + retstr;
}
retstr = retstr+'.';
// 处理小数部分
str=strarr.length>1?strarr[1]:'';
fmt=fmtarr.length>1?fmtarr[1]:'';
i=0;
for(var f=0;f<fmt.length;f++){
switch(fmt.substr(f,1)){
case '#':
if(i<str.length) retstr+=str.substr(i++,1);
break;
case '0':
if(i<str.length) retstr+= str.substr(i++,1);
else retstr+='0';
break;
}
}
return retstr.replace(/^,+/,'').replace(/\.$/,'');
}
.前面的字符串123456/1000=123 123+“,”,123456%1000=456 123,+456-->123,456
用java或js都可。
var inter = Math.round(parseFloat(num) * 100); var temp = ((inter / 100) + '').split('.'); if (temp.length == 1) {
temp[1] = '00';
} var value = temp[0].slice(-3), count = 0; if (temp[0].length > 3) {
for (var i = temp[0].length - 3, count = i; i - 2 > 0; i = i - 2){
value = temp[0].substr(i - 2, 3) + ',' + value;
count = i;
}
} if (count > 0) {
value = temp[0].slice(0, count) + ',' + value;
}
return value + '.' + temp[1];
}
var str = '123123123456.002233';
str = str.replace(/(\d)(?=(?:\d{3})+\.)/g,'$1,');
alert(str);