`
qualenac
  • 浏览: 63654 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类

关于金额转换的问题(转)

ASP 
阅读更多
http://www.cssrain.cn/article.asp?id=40

<script language="JavaScript">
var stmp = "";
function nst(t)
{
   if(t.value==stmp) return;//如果等于上次输入则返回
   var ms = t.value.replace(/[^\d\.]/g,"").replace(/(\.\d{2}).+$/,"$1").replace(/^0+([1-9])/,"$1").replace(/^0+$/,"0");
   //replace(/[^\d\.]/g,"")去掉输入当中不是数字和.的字符
   //replace(/(\.\d{2}).+$/,"$1")
   //匹配从字符开始的第一个.后面的所有字符,由于没有使用g标记,
   //所以只匹配开始第一次   然后用小数点和后两位进行替换以确定数值最后的格式正确 高.
   //replace(/^0+([1-9])/,"$1") 匹配以多个0开头的数值替换为去掉0后的数值做为数字的第一位 也是匹配开始的一次.
   //replace(/^0+$/,"0") 匹配以0开始和结束的多个0为一个0 也就是0000000 输入->转换成一个0
   //以下确定输入的为过滤后的合法数字
   //alert(ms);
   var txt = ms.split(".");
   //alert(txt[0]);
   //如果ms值不小数点存在则txt[0]=小数点前的值否则等于ms
   //regexp:/\d{4}(,|$)/ 匹配四位数字和,的集合或者四位数字和字符结尾的集合
   while(/\d{4}(,|$)/.test(txt[0]))//如果为txt[0]=4123
     txt[0] = txt[0].replace(/(\d)(\d{3}(,|$))/,"$1,$2");
   //txt[0].replace(/(\d)(\d{3}(,|$))/,"$1,$2")是将txt[0]进行替换后再赋给它
   //regexp:/(\d)(\d{3}(,|$))/ 将四个数字份为两组第一个数字为第一位,后三位和其他结尾为每二位
   //并替换成 第一位,第二位 注意 ,的使用很好.   也就是将4123先替换成4,123
   //由于此表达式默认采用贪婪匹配所以从数值后向前匹配再通过循环进行再匹配替换从而可以将
   //12345678分成你想要的123,456,78 楼主彩用(,|$)很精典,因为它略去了第二次匹配时的,问题
   t.value = stmp = txt[0]+(txt.length>1?"."+txt[1]:"");
   //最终赋值到输入框中 
   //如果有小数点则加上并购成最终数字否则显示替换后的txt[0]
   bbb.value = number2num1(ms-0);
   //将ms转换为数字送到number2num1去转换
}

function number2num1(strg)
{
   var number = Math.round(strg*100)/100;
   //先进行小数位数转换也就是四舍五入由于上面已限定了小数位可不用
   number = number.toString(10).split('.');//转换成十进制字符并用小数点隔开
   var a = number[0];//取小数点前的值如果有小数点则取它前面的否则取这个数值
   if (a.length > 12)//判断是否超过了计算范围
     return "数值超出范围!支持的最大数值为 999999999999.99";//退出
   var e = "零壹贰叁肆伍陆柒捌玖";
   var num1 = "";
   var len = a.length-1;
   for (var i=0 ; i<=len; i++)//按单个数字逐个进行遍历
    num1 += e.charAt(parseInt(a.charAt(i))) + [["圆","万","亿"][Math.floor((len-i)/4)],"拾","佰","仟"][(len-i)%4];
    //e.charAt(parseInt(a.charAt(i)))将所选数字对应到相应的大写数组下标并取出大写值
    //[["圆","万","亿"][Math.floor((len-i)/4)],"拾","佰","仟"][(len-i)%4]
    // ["圆","万","亿"][Math.floor((len-i)/4)]如果小于4位显示 "圆"
    //                                         如果大于4位小于8位则显示 "万"
    //                                         如果大于8位则显示   "亿"
    //由上面得到一个新数组    ->                如果小于4位显示 ["圆","拾","佰","仟"]
    //                                         如果大于4位小于8位则显示 ["万","拾","佰","仟"]
    //                                         如果大于8位则显示   ["亿","拾","佰","仟"]
    //    [(len-i)%4] 得到相应的所属下标 分别得到 "圆","万","亿","拾","佰","仟
    //下面处理小数点后的数值
   if(number.length==2 && number[1]!="")
   {
     var a = number[1];//得到.后数值
     for (var i=0 ; i<a.length; i++)
      num1 += e.charAt(parseInt(a.charAt(i))) + ["角","分"];
   }
   //以上完成后再进行正则过滤掉一些重复字符
   num1 = num1.replace(/零佰|零拾|零仟|零角/g,"零");//全局替换零
   num1 = num1.replace(/零{2,}/g,"零");//替换2个以上零为一个零
   num1 = num1.replace(/零(?=圆|万|亿)/g,"");//替换零圆,零万,零亿,中的零为空
   num1 = num1.replace(/亿万/,"亿");//替换亿万为亿只替换第一次
   num1 = num1.replace(/^圆零?/,"");//替换字符串中开始的圆零为空此匹配为非贪婪匹配.适用于.57转换时
   //如果要最终数值不为空并且该串结尾不为"分"结尾则加一个"整字"
   if(num1!="" && !/分$/.test(num1))
     num1 += "整";
   return num1;
}

</script>
<!--按键弹起时触发转换事件-->
小写金额:<input type="text" name="aaa" onkeyup="nst(this)"><br>
大写金额:<input type="text" name="bbb" size=80>

分享到:
评论

相关推荐

    VB编写的金额转换例子

    在VB(Visual Basic)编程中,金额转换是一个常见的需求,特别是在财务软件或会计系统中。这个例子展示了如何将数字格式的金额转换为汉字大写,以便于财务报表和支票等正式文档的清晰表述。汉字大写金额转换是避免...

    C语言 金额转换大写

    在日常工作中,我们经常需要将数字金额转换成汉字大写形式,特别是在财务系统、银行系统或发票处理等场景中。本篇文章将详细解析一个C语言编写的函数`LowMoneyToUpper`,该函数能够将小写金额转换为大写形式,并且...

    将数字金额转换为中文大写金额

    将数字金额转换为中文大写金额将数字金额转换为中文大写金额将数字金额转换为中文大写金额

    java 类 金额转换成大写

    Java 类金额转换成大写 在 Java 编程语言中,金额转换成大写是非常有用的功能,特别是在财务、银行、电子商务等领域中。下面我们来详细介绍如何使用 Java 实现金额转换成大写的功能。 实例代码分析 首先,我们来...

    SQL金额转换中文金额

    SQL实现金额的转换,转换成中文大写,的处理

    银行金额转换

    根据给定的文件信息,我们可以总结出以下关于“银行金额转换”的相关知识点,主要聚焦于Java编程语言在处理银行金额转换中的应用。 ### 银行金额转换:Java实现细节 #### 核心功能与算法设计 在Java中实现银行金额...

    关于数字金额转换为¥的问题

    在提供的压缩包文件"关于数字金额转换为¥的问题.htm"中,很可能包含了上述问题的详细示例代码或者更深入的讲解,包括如何在HTML页面中嵌入这段JavaScript代码,以及如何与用户界面元素(如输入框、按钮等)交互。...

    Asp.net C# 数字货币金额转换为中英文金额写法

    在Asp.net C#开发中,经常需要处理与货币相关的数据,这包括将数字金额转换成规范的中英文表示方式,以满足财务报告、发票或合同等场景的需求。本资源提供的程序实现了一种高效的方法来完成这个任务。下面将详细阐述...

    C# - 阿拉伯数字金额转换为繁体数字金额

    这个特定的项目“C# - 阿拉伯数字金额转换为繁体数字金额”专注于一个常见的财务处理任务,即把通常用阿拉伯数字表示的货币金额转化为繁体中文的表示方式。这在中文环境中特别有用,因为繁体数字在正式的商业文档和...

    关于金额大,小写转换的问题

    大写金额转换为小写金额相对简单,因为只需要解析汉字或罗马数字为对应的阿拉伯数字。这个过程可以通过查找和替换实现,但需要注意处理特殊字符和进位规则。 **三、JavaScript实践示例** 下面是一个简单的...

    大小写金额转换

    在IT领域,尤其是在编程与财务应用的交叉领域中,“大小写金额转换”是一个常见的需求,尤其是在处理财务报表、发票或银行交易时。该功能的主要目的是将数字表示的金额转换为中文大写形式,以符合中国会计和金融领域...

    小写金额转换大写金额函数

    create or replace function sf_get_money(p_num in number default null) 此函数处理数字小写金额转换为大写金额 

    小写金额转大写转换器2020新版

    通过《小写金额转大写转换器2020新版》,财务人员可以轻松地完成金额转换任务,减少手动转换带来的错误可能性,提升工作效率。同时,软件的便携性和无广告特性使得它在日常工作中的应用更加便捷。对于经常处理财务...

    小写金额转换为大写金额

    在金融和会计领域,金额通常会以两种形式存在:小写和大写。小写金额是常规的数字表示,如123456....通过理解并遵循这些规则,我们可以编写出能够准确将小写金额转换为大写金额的程序,确保财务数据的准确性和规范性。

    电子表格财务金额转换大写解决办法

    通过上述方法,我们可以在电子表格中轻松地将任何小写金额转换为大写形式,这不仅提高了财务文档的专业性,也减少了手动输入错误的风险。然而,值得注意的是,由于中文大写数字转换涉及到复杂的规则,尤其是零的使用...

    js金额自动转换

    自动将输入的金额转换成大写 如输入 123转换为 壹百贰拾叁元整 输入123.12 转换为 壹百贰拾叁元壹角贰分

    把大写金额转换成小写的

    将大写金额转换为小写是日常业务处理中常见的一项操作。下面,我们将详细介绍如何进行这种转换,并探讨相关的知识点。 首先,我们需要了解大写金额的规范。在中国,大写金额通常遵循以下规则: 1. 数字“0”对应...

    c#实现大小写金额转换

    在IT领域,尤其是在软件开发与财务系统中,将数字金额转换为中文大写金额是一项常见的需求,尤其是在中国。这种转换通常用于正式文档、发票、合同等场合,以增强金额表述的正式性和避免篡改的可能性。C#作为一种广泛...

    将阿拉伯数字金额转换为中国传统形式人民币值

    自己写的将阿拉伯数字金额转换为中国传统形式人民币值的小程序,亲测可用!

    oracle自定义函数实现金额转换为大写

    oracle数据库,使用自定义函数,实现了金额的大写转换。sql语句中,直接调用此函数即可得到金额大写。

Global site tag (gtag.js) - Google Analytics