一个格式化数值的函数
时间:2007-02-17 来源:PHP爱好者
简单模拟了一点XSL里的formatNumber()方法
一些说明:
“,” (半角的豆号) 如果有的话,看豆号到小数点(如果有的话)前有几位,则按几位划分整数部分
“0”(数字零) 如果该位上没有数字,就补0
“#”(井号) 如果该位上有数字就输出数字,没有则不输出
格式化数值的函数
<script>function formatNumber(number,pattern){var str= number.toString();var strInt;var strFloat;var formatInt;var formatFloat;if(/./g.test(pattern)){formatInt= pattern.split('.')[0];formatFloat= pattern.split('.')[1];}else{formatInt= pattern;formatFloat= null;}if(/./g.test(str)){if(formatFloat!=null){var tempFloat= Math.round(parseFloat('0.'+str.split('.')[1])*Math.pow(10,formatFloat.length))/Math.pow(10,formatFloat.length);strInt= (Math.floor(number)+Math.floor(tempFloat)).toString();strFloat= /./g.test(tempFloat.toString())?tempFloat.toString().split('.')[1]:'0';}else{strInt= Math.round(number).toString();strFloat= '0';}}else{strInt= str;strFloat= '0';}if(formatInt!=null){var outputInt= '';var zero= formatInt.match(/0*$/)[0].length;var comma= null;if(/,/g.test(formatInt)){comma= formatInt.match(/,[^,]*/)[0].length-1;}var newReg= new RegExp('(d{'+comma+'})','g');if(strInt.length<zero){outputInt= new Array(zero+1).join('0')+strInt;outputInt= outputInt.substr(outputInt.length-zero,zero)}else{outputInt= strInt;}var outputInt= outputInt.substr(0,outputInt.length%comma)+outputInt.substring(outputInt.length%comma).replace(newReg,(comma!=null?',':'')+'$1')outputInt= outputInt.replace(/^,/,'');strInt= outputInt;}if(formatFloat!=null){var outputFloat= '';var zero= formatFloat.match(/^0*/)[0].length;if(strFloat.length<zero){outputFloat= strFloat+new Array(zero+1).join('0');//outputFloat= outputFloat.substring(0,formatFloat.length);var outputFloat1= outputFloat.substring(0,zero);var outputFloat2= outputFloat.substring(zero,formatFloat.length);outputFloat= outputFloat1+outputFloat2.replace(/0*$/,'');}else{outputFloat= strFloat.substring(0,formatFloat.length);}strFloat= outputFloat;}else{if(pattern!=''
(pattern=='' && strFloat=='0')){strFloat= '';}}return strInt+(strFloat==''?'':'.'+strFloat);}alert(formatNumber(0,''));alert(formatNumber(12432.21,'#,###'));alert(formatNumber(12432.21,'#,###.000#'));alert(formatNumber(12432,'#,###.00'));alert(formatNumber(12432.419,'#,###.0#'));</script>
[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行](出处:蓝色理想)
非常全面的一个php技术网站,php 爱好者站 http://www.phpfans.net 有相当丰富的文章和源代码.
一些说明:
“,” (半角的豆号) 如果有的话,看豆号到小数点(如果有的话)前有几位,则按几位划分整数部分
“0”(数字零) 如果该位上没有数字,就补0
“#”(井号) 如果该位上有数字就输出数字,没有则不输出
格式化数值的函数
<script>function formatNumber(number,pattern){var str= number.toString();var strInt;var strFloat;var formatInt;var formatFloat;if(/./g.test(pattern)){formatInt= pattern.split('.')[0];formatFloat= pattern.split('.')[1];}else{formatInt= pattern;formatFloat= null;}if(/./g.test(str)){if(formatFloat!=null){var tempFloat= Math.round(parseFloat('0.'+str.split('.')[1])*Math.pow(10,formatFloat.length))/Math.pow(10,formatFloat.length);strInt= (Math.floor(number)+Math.floor(tempFloat)).toString();strFloat= /./g.test(tempFloat.toString())?tempFloat.toString().split('.')[1]:'0';}else{strInt= Math.round(number).toString();strFloat= '0';}}else{strInt= str;strFloat= '0';}if(formatInt!=null){var outputInt= '';var zero= formatInt.match(/0*$/)[0].length;var comma= null;if(/,/g.test(formatInt)){comma= formatInt.match(/,[^,]*/)[0].length-1;}var newReg= new RegExp('(d{'+comma+'})','g');if(strInt.length<zero){outputInt= new Array(zero+1).join('0')+strInt;outputInt= outputInt.substr(outputInt.length-zero,zero)}else{outputInt= strInt;}var outputInt= outputInt.substr(0,outputInt.length%comma)+outputInt.substring(outputInt.length%comma).replace(newReg,(comma!=null?',':'')+'$1')outputInt= outputInt.replace(/^,/,'');strInt= outputInt;}if(formatFloat!=null){var outputFloat= '';var zero= formatFloat.match(/^0*/)[0].length;if(strFloat.length<zero){outputFloat= strFloat+new Array(zero+1).join('0');//outputFloat= outputFloat.substring(0,formatFloat.length);var outputFloat1= outputFloat.substring(0,zero);var outputFloat2= outputFloat.substring(zero,formatFloat.length);outputFloat= outputFloat1+outputFloat2.replace(/0*$/,'');}else{outputFloat= strFloat.substring(0,formatFloat.length);}strFloat= outputFloat;}else{if(pattern!=''
(pattern=='' && strFloat=='0')){strFloat= '';}}return strInt+(strFloat==''?'':'.'+strFloat);}alert(formatNumber(0,''));alert(formatNumber(12432.21,'#,###'));alert(formatNumber(12432.21,'#,###.000#'));alert(formatNumber(12432,'#,###.00'));alert(formatNumber(12432.419,'#,###.0#'));</script>
[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行](出处:蓝色理想)
非常全面的一个php技术网站,php 爱好者站 http://www.phpfans.net 有相当丰富的文章和源代码.
相关阅读 更多 +