原文参考

逛到一道面试题,数字转大写中文的,搜索学习并记录于此。

//自动转换数字金额为大小写中文字符,返回大小写中文字符串,最大处理到999兆
function changeMoneyToChinese( money )
{
var cnNums = new Array("零","壹","贰","叁","肆","伍","陆","柒","捌","玖"); //汉字的数字
var cnIntRadice = new Array("","拾","佰","仟"); //基本单位
var cnIntUnits = new Array("","万","亿","兆"); //对应整数部分扩展单位
var cnDecUnits = new Array("角","分","毫","厘"); //对应小数部分单位
var cnInteger = "整"; //整数金额时后面跟的字符
var cnIntLast = "元"; //整型完以后的单位
var maxNum = 999999999999999.9999; //最大处理的数字 var IntegerNum; //金额整数部分
var DecimalNum; //金额小数部分
var ChineseStr=""; //输出的中文金额字符串
var parts; //分离金额后用的数组,预定义 if( money == "" ){
return "";
} money = parseFloat(money);
//alert(money);
if( money >= maxNum ){
$.alert('超出最大处理数字');
return "";
}
if( money == 0 ){
ChineseStr = cnNums[0]+cnIntLast+cnInteger;
//document.getElementById("show").value=ChineseStr;
return ChineseStr;
}
money = money.toString(); //转换为字符串
if( money.indexOf(".") == -1 ){
IntegerNum = money;
DecimalNum = '';
}else{
parts = money.split(".");
IntegerNum = parts[0];
DecimalNum = parts[1].substr(0,4);
}
if( parseInt(IntegerNum,10) > 0 ){//获取整型部分转换
zeroCount = 0;
IntLen = IntegerNum.length;
for( i=0;i<IntLen;i++ ){
n = IntegerNum.substr(i,1);
p = IntLen - i - 1;
q = p / 4;
m = p % 4;
if( n == "0" ){
zeroCount++;
}else{
if( zeroCount > 0 ){
ChineseStr += cnNums[0];
}
zeroCount = 0; //归零
ChineseStr += cnNums[parseInt(n)]+cnIntRadice[m];
}
if( m==0 && zeroCount<4 ){
ChineseStr += cnIntUnits[q];
}
}
ChineseStr += cnIntLast;
//整型部分处理完毕
}
if( DecimalNum!= '' ){//小数部分
decLen = DecimalNum.length;
for( i=0; i<decLen; i++ ){
n = DecimalNum.substr(i,1);
if( n != '0' ){
ChineseStr += cnNums[Number(n)]+cnDecUnits[i];
}
}
}
if( ChineseStr == '' ){
ChineseStr += cnNums[0]+cnIntLast+cnInteger;
}
else if( DecimalNum == '' ){
ChineseStr += cnInteger;
}
return ChineseStr; }
</script>

最新文章

  1. 【转】单调队列优化DP
  2. log4j 配置
  3. 各种编码问题产生原因以及解决办法---------响应编码,请求编码,URL编码
  4. clone github的代码
  5. 1234[&#39;toString&#39;][&#39;length&#39;] 等于啥?
  6. ubuntu下启动和关闭tomcat的简单方法
  7. PHP基础1
  8. 鼠标进入与离开的消息(覆盖CM_MOUSEENTER与CM_MOUSELEAVE消息)——Windows本身没有这样的消息
  9. sql server数据库备份压缩拷贝实例
  10. 内核对象kobject和sysfs(3)——kobj分析
  11. oracle pl/sql如何定义变量
  12. SDN第五次上机作业
  13. Uva - 816 - Abbott&#39;s Revenge
  14. Microsoft.Office.Interop.Excel 报错
  15. WinForm 窗体圆角实现
  16. Confluence 6 内存使用和需求
  17. rem+media+jquery布局结局方案
  18. 【Visual Studio 扩展工具】如何在ComponentOne的DataTree中实现RightToLeft布局
  19. Codeforces Round #553 (Div. 2) D. Stas and the Queue at the Buffet 贪心+公式转化
  20. 有关Math数学运算的js函数

热门文章

  1. Practical Malware Analysis里有关inetsim\APATEDNS
  2. iis里面浏览网页,提示找不到应用程序的解决办法
  3. 安装Windows 7
  4. Dom4j解析xml
  5. python 中BeautifulSoup入门
  6. usb端口号绑定
  7. .net版高斯模糊算法
  8. C# 写的一个生成随机汉语名字的小程序
  9. S5PV210之GPIO模拟I2c时序之pcf8591与at24xx linux3.0.8驱动
  10. bak骗子公司