把金额转换为大写
- 格式:doc
- 大小:36.00 KB
- 文档页数:11
金额大写函数公式
金额大写函数公式可用于将数字金额转换为大写金额,常用于财务报表等场合。
其公式如下:
设数字金额为N,大写金额为S。
将N分解为整数部分和小数部分,分别用A和B表示:
N=A+B
整数部分A可用以下公式转换为大写金额:
1、将A按四位一组分为若干组,最高组为亿,最低组为元。
设第i组的数字为ai,则该组的大写金额为:
Si=壹贰叁肆伍陆柒捌玖(ai≠0)+零(ai=0)
2、将亿、万、元等单位连接起来,并去除连续的零,即可得到整数部分的大写金额S。
小数部分B可用以下公式转换为大写金额:
1、将B乘以100,得到整数部分C。
2、将C按两位一组分为若干组,第一组为角,第二组为分。
设第i组的数字为ci,则该组的大写金额为:
Si=零(ci=0)+壹角(ci=1)+贰角(ci=2)+叁角(ci=3)+肆角(ci=4)+伍角(ci=5)+陆角(ci=6)+柒角(ci=7)+捌角(ci=8)+玖角(ci=9)
3、将角和分连接起来,并去除连续的零,即可得到小数部分的大写金额S。
最终的大写金额S为整数部分S和小数部分S之和。
excel数字大写转换公式Excel是一款功能强大的电子表格软件,它不仅可以进行数据的计算和分析,还可以对数据进行格式化和展示。
其中一个常用的功能就是将数字转换为大写的金额,这在一些财务报表和合同中非常常见。
本文将介绍关于Excel数字大写转换公式的使用方法和注意事项。
我们需要明确一点,Excel并没有内置的函数来直接将数字转换为大写金额。
因此,我们需要使用一些自定义的公式来实现这个功能。
下面是一个常用的公式:```=UPPER(TEXT(A1,"[$-0804][DBNum2]G/通用格式"))```这个公式使用了TEXT函数和UPPER函数来实现金额的大写转换。
其中,A1表示要转换的单元格,你可以根据自己的需求来修改。
这个公式的一个特点是,它可以将小数点后两位的金额转换为大写,而不仅仅是整数部分。
需要注意的是,这个公式中的“[$-0804][DBNum2]G/通用格式”部分是一个格式代码,它可以将金额以大写的形式显示出来。
在使用时,你可以根据自己的需要选择其他的格式代码,比如“[$-0804][DBNum2]G/货币”可以将金额以货币的形式显示出来。
这个公式还有一个限制,就是它只能将金额转换为大写的中文形式。
如果你需要将金额转换为其他语言的大写形式,那么你可能需要使用其他的公式或者宏来实现。
除了上面介绍的公式,还有一些其他的方法可以实现金额的大写转换。
比如,你可以使用VBA宏来编写一个自定义的函数,然后在Excel中调用这个函数来实现转换。
不过,这个方法需要一些编程的知识,对于一般用户来说可能比较复杂。
除了将数字转换为大写金额,Excel还有很多其他的数字格式化功能。
比如,你可以使用“¥0.00”格式将数字显示为带有货币符号的两位小数形式。
你还可以使用“0.00%”格式将数字显示为百分比形式。
这些功能都可以在Excel的格式化选项中找到,非常方便。
Excel的数字大写转换功能是一个非常实用的功能,可以帮助我们更好地展示和格式化数据。
大小写金额转换公式
(原创版)
目录
1.引言
2.金额转换公式概述
3.大小写金额转换方法
4.实际应用案例
5.结论
正文
【引言】
在财务管理和会计领域,金额表示方式有多种,其中最为常见的是大小写金额表示。
为了方便用户在不同表示方式间进行转换,本文将为大家介绍一种大小写金额转换公式。
【金额转换公式概述】
大小写金额转换公式是指将数字金额转换为大写金额表示,或将大写金额表示转换为数字金额表示的一种方法。
在我国,大写金额表示主要采用汉字数字,如“壹”、“贰”、“叁”等。
【大小写金额转换方法】
1.数字金额转大写金额:
采用以下公式进行转换:
大写金额 = 数字金额× 100000000 + “亿”
例如:数字金额为 123456789,转换后的大写金额为:壹亿贰仟叁佰肆拾伍万陆仟柒佰捌拾玖。
2.大写金额转数字金额:
采用以下公式进行转换:
数字金额 = 大写金额÷ 100000000 - “亿”
例如:大写金额为壹亿贰仟叁佰肆拾伍万陆仟柒佰捌拾玖,转换后的数字金额为:123456789。
【实际应用案例】
在实际财务管理和会计工作中,大小写金额转换公式可以应用于各种金额表示的转换,如发票、支票、合同等文件中的金额表示。
这有助于提高工作效率,减少人工操作的错误。
【结论】
大小写金额转换公式为用户提供了一种简便、快速的金额表示转换方法。
在实际应用中,这种方法有助于提高财务管理和会计工作的效率,降低错误率。
大写数字转化
在日常生活中,我们经常需要将数字表示成大写字母的形式,比如在填写票据或合同等文件时。
以下是大写数字转化的一些基本规则: 1. 整数部分小于等于十万的数字,直接用大写数字表示。
例如:123 →壹佰贰拾叁、50000 →伍万、88888 →捌万捌
仟捌佰捌拾捌。
2. 整数部分大于十万小于一亿的数字,用“**万**”连接前半
段大写数字和后半段的“**万**”之前的数字,再用“**万**”连接后半段的大写数字。
例如:200000 →二十万、1234567 →壹佰贰拾叁万肆仟伍佰
陆拾柒、88888888 →捌千八百八十八万捌千八百八十八。
3. 整数部分大于等于一亿的数字,用“**亿**”连接前半段大
写数字和后半段的“**亿**”之前的数字,再用“**万**”连接“**亿**”之后的数字。
注意:如果前半段数字以“零”结尾,则需要在两个“亿”之间加上“**零**”。
例如:100000000 →壹亿、1234567890 →壹拾贰亿叁仟肆佰
伍拾陆万柒仟八佰玖拾、1000100000 →壹亿零壹万。
- 1 -。
小写数字转换大写金额在生活和工作中,我们经常需要将小写数字转换为大写金额。
无论是填写支票、填报表格还是使用中文写信,正确地将小写数字转化为大写金额都是非常重要的。
在本文中,我们将探讨如何准确地将小写数字转换为大写金额,并提供一些实用的技巧和示例。
一、基本规则在将小写数字转换为大写金额时,需要遵循一些基本规则。
以下是一些基本规则的概述:1.数字组合:按照汉字的习惯用法,数字一般采用阿拉伯数字,如1、2、3等。
当数字大于9时,应使用相应的数位字符,如10、100、1000等。
例如,将数字123转换为大写金额应为“壹佰贰拾叁元整”。
2.零的使用:在金额中,零的使用是非常重要的。
每个整数数字之间都要使用“零”进行分隔,以示清晰。
例如,将数字1234转换为大写金额应为“壹仟贰佰叁拾肆元整”。
3.单位的使用:大写金额中需要标明货币单位,如“元”,“角”,“分”等。
例如,将数字123.45转换为大写金额应为“壹佰贰拾叁元肆角伍分”。
4.进位规则:当有0在整数数字中,如100、1000时,需要正确进位,并使用相应的数位字符。
例如,将数字1000转换为大写金额应为“壹仟元整”。
5.小数位的处理:小数位的处理也很关键,需要将小数部分转换为大写金额,并使用相应的数位字符。
例如,将数字123.45转换为大写金额应为“壹佰贰拾叁元肆角伍分”。
二、转换示例以下是几个常见的示例来演示如何准确地将小写数字转换为大写金额:1.数字1234.56转换为大写金额:壹仟贰佰叁拾肆元伍角陆分2.数字9999.99转换为大写金额:玖仟玖佰玖拾玖元玖角玖分3.数字10000.00转换为大写金额:壹万元整4.数字1转换为大写金额:壹元整以上示例可以帮助我们了解如何正确地将小写数字转换为大写金额。
根据不同的需要,我们可以灵活运用这些基本规则和转换示例,确保准确地将小写数字转换为大写金额。
三、注意事项在将小写数字转换为大写金额时,还需要注意一些事项,以避免出现错误。
Excel中如何将货币数值由数字金额自动转为中文大写金额使用Excel时有时会用数据的转换,尤其是做财务工作,如工资表等时就需要用中文大写金额。
如果手动输入,就会麻烦一些,多的时候也会增加了工作量。
我们可以使用Excel 中的函数来实现将货币数值由数字金额自动转换成中文大写金额。
本文以一份表格为例讲解如何将数字金额转换为中文大写金额。
先在Excel表格中算出合计金额,如下图。
利用公式把小写的货币转换为中文大写,并写在合并的单元格中。
公式如下:=IF((I41-INT(I41))=0,TEXT(I41,"[DBNUM2]")&"元整",IF(INT(I41*10)-I41*10=0,TEXT(INT(I41),"[DBNUM2]")&"元"&TEXT(INT(I41*10)-INT(I41)*10,"[DBNUM2]")&"角整",TEXT(INT(I41),"[DBNUM2]")&"元"&IF(INT(I41*10)-INT(I41)*10,"零",TEXT(INT(I41*10)-INT(I41)*10,"[DBNUM2]")&"角")&TEXT(RIGHT(I41,1),"[DBNUM2]")&"分"))。
把公式输入合计右边的合并单元格中,如下图。
输入后的显示结果如下图。
公式中一共用到了4函数,文本连接符“&”及相应的汉字。
下面对这4种函数做个讲解:IF函数:是一个条件判断函数,该函数的基本格式是:IF(a,b,c),其中“a”是一个条件,“b”和“c”是两种判断结果,可以表述为:如果条件a成立,那么结果是b,否则结果就是c。
手把手教你转换出中文大写金额大家在使用Excel的时候,是否会遇到要把一个或一些阿拉伯数字转换成中文大写金额的计算要求呢?如果只是偶尔需要对少数几个数字进行转换,干脆手工操作啦,但如果要进行转换的数字较多或经常要转换时,该怎么办呢?一向无往不胜的Excel能为你做些什么呢?其实,这个不难,最少有三种方法可以实现。
<br>一、设置单元格格式:<br>用这个办法能直接将阿拉伯数字转换成中文大写金额,而且操作简单。
右击需要转换的单元格,在弹出的快捷菜单中选择“单元格格式”,然后在“数字”选项卡中选择“自定义”,在“类型”中写入“[DBNum2]G/通用格式"元"”后按确定即可。
瞧,321是不是已经变成了“叁佰贰拾壹元”了?<br> 可惜的是,这个办法只能处理整数,而对带有小数的数字无能为力。
当然也有过朋友通过对此法进行一定的扩展而可以处理部分带小数的数字,但效果不是很理想。
<br>二、利用中文大写金额转换函数:<br>先别急,这个函数你在Excel里是找不到的,微软毕竟不是大陆公司!这个函数被收集在本站开发的“Excel扩展函数集”里,下载这个函数集,按说明进行安装后,在Excel中运用一个叫EHDXRMB()的函数就可以将任意数字转换成中文大写金额。
具体情况在此就不多进行介绍了。
<br>三、利用公式进行转换:<br>所谓“自力更生,丰衣足食”,这第三种方法就是自己编写公式进行转换。
虽然吝啬的小编连白开水也舍不得给我,但我还是一如既往地发扬大公无私之精神将独门密技告之天下,包学包会,不会免费再学……(小编:STOP!再要是废话就OUT!)<br>为了照顾一些Excel初学者,我们先来了解一下什么是Excel里的公式与函数。
Excel之所以计算功能异常强大,百分之八十的功劳就在于用户可以创建公式进行计算。
excel金额大小写转换公式的用法Excel中经常需要使用到金额大小写转换公式对金额进行转换,金额大小写转换公式具体该如何使用呢?接下来是小编为大家带来的excel金额大小写转换公式的用法,供大家参考。
excel金额大小写转换公式用法(一)步骤1:数字转人民币大写形式的公式是:=IF(B10,金额为负无效,(IF(OR(B1=0,B1=),(人民币)零元,IF(B11,(人民币),TEXT(INT(B1),[dbnum2](人民币)G/通用格式)元)))),零),(TEXT(INT(B1*10)-INT(B1)*10,[dbnum2])角))整,TEXT((INT(B1*100)-INT(B1*10)*10),[dbnum2])分)步骤2:数字转人民币大写形式的公式是:=大写金额:,,IF(B1=0,,人民币0,负,)[dbnum2])元,)[dbnum2])角,IF(INT(ABS(B1))=ABS(B1),,IF(ABS(B1)0.1,,零)))[dbnum2])分,整)))excel金额大小写转换公式用法(二)步骤1:通过宏VBA自定义函数实现第一步:按下ALT+F11组合键,或者是单击工具宏Visual Basic编辑器,进入Visual Basic编程环境,单击插入菜单模块,复制下面代码,保存,退出关闭。
Function N2RMB(M)y = Int(Round(100 * Abs(M)) / 100)j = Round(100 * Abs(M) + 0.00001) - y * 100f = (j / 10 - Int(j / 10)) * 10A = IIf(y 1, , Application.Text(y, [DBNum2]) 元)b = IIf(j 9.5, Application.Text(Int(j / 10), [DBNum2]) 角, IIf(y 1, , IIf(f 1, 零, )))c = IIf(f 1, 整, Application.Text(Round(f, 0), [DBNum2]) 分)N2RMB = IIf(Abs(M) 0.005, , IIf(M 0, 负 b b c))End Function步骤2:返回excel操作界面,在B1单元格输入:= N2RMB (A1),就可以将A1单元格的数字转为人民币大写,然后向下复制公式即可将全部的数字转为人民币大写。
小写金额转换大写金额函数公式1.概述在日常生活和工作中,经常会与人进行金融交易,其中包括付款和收款。
在执行这些交易时,我们需要将商品或服务的价格转换为文字,称为大写金额。
大写金额与阿拉伯数字金额相比更加容易理解和记录,也可以提高交易的清晰度,因此在许多场合非常必要。
本文将介绍一个通用的小写金额转换大写金额的函数公式。
2.函数公式以下是一种通用的小写金额转换大写金额的函数公式:def digit_uppercase(digit):if digit>999999999999.99or digit<0:return"输入金额过大或者过小,请重新输入!"digits,fractions=str(round(digit,2)).split('.')digits=digits[::-1]result=[]if len(digits)>0:result.append('圆')zero_flag=Falsefor index in range(len(digits)):if digits[index]!='0':zero_flag=Falseresult.append('壹贰叁肆伍陆柒捌玖'[int(digits[index])])if index==0:result.append('亿')elif index==1:result.append('拾')elif index==2:result.append('佰')elif index==3:result.append('仟')elif index==4:result.append('万')elif index==5:result.append('拾')elif index==6:result.append('佰')elif index==7:result.append('仟')else:if not zero_flag:zero_flag=Trueresult.append('零')if index==4or index==8:result.append('万')if len(digits)==1or digits[1]=='0': result.append('元整')if len(digits)>1and digits[1]!='0': result.append('元')if len(digits)>1:for index in range(1,len(digits)): if index==1:result.append('角')elif index==2:result.append('分')if digits[index]!='0':result.append('壹贰叁肆伍陆柒捌玖'[int(digits[index])])else:result.append('零元整')return''.join(result[::-1])3.函数公式详解这个函数的输入参数是小写金额digit,小数点后最多只能有两位数字。
关于把金额转换成大写技巧集萃这段时间不少朋友在询问怎样把金额转换成大写的办法。
本来坛子里已经有不少这方面的帖子了,为了避免重复发帖,特在此将论坛里关于这一问题的办法汇聚于此。
当然,大家如果有什么新的思路和办法也可以在此跟帖。
今后如果有类似提问将被指向此帖假设A1单元格为原始数据一、公式法一:=IF(A1=0,"零元整",IF(A1<0,"负",)&IF(INT(ABS(A1)),TEXT(INT(ABS(A1)),"[dbnum2]")&"元",)&IF(INT(ABS(A1)*10)-INT(ABS(A1))*10,TEXT(INT(ABS(A1)*10)-INT(ABS(A1))*10,"[db num2]")&"角",IF(INT(ABS(A1))=ABS(A1),,"零"))&IF(ROUND(ABS(A1)*100-INT(ABS(A1)*10)*10,),TEXT(ROUND(ABS(A1)*100-INT(AB S(A1)*10)*10,),"[dbnum2]")&"分","整"))二、公式法二:=IF(A1<0,"负",)&TEXT(TRUNC(ABS(A1)),"[DBNum2]G/通用格式")&"元"&IF(ROUND(A1,3)=ROUND(A1,),"整",TEXT(RIGHT(TRUNC(A1*10),1),"[DBNum2]G/通用格式")&"角"&IF(ROUND(A1,3)=ROUND(A1,1),"整",TEXT(RIGHT(ROUND((A1*100),),1),"[DBNum2]G/通用格式")&"分"))三、公式法三:=CONCA TENATE(TEXT(INT(A1),"[DBNum2][$-804]G/通用格式")&"元"&IF((INT(A1*10)-INT(A1)*10)=0,"",TEXT(IF(AND(CEILING(A1*100,1)-INT(A1*10)*10=1 0,INT(A1*1000)-INT(A1*100)*10>=5),INT(A1*10)-INT(A1)*10+1,INT(A1*10)-INT(A1)*10), "[DBNum2][$-804]G/通用格式")&"角")&IF(OR(INT(A1*100)-INT(A1*10)*10=0,(IF(INT(A1*1000)-INT(A1*100)*10>=5,CEILING( A1*100,1)-INT(A1*10)*10=10,FALSE))),"整",(IF(INT(A1*1000)-INT(A1*100)*10>=5,(IF(CEILING(A1*100,1)-INT(A1*10)*10=10,"",(TE XT(CEILING(A1*100,1)-INT(A1*10)*10,"[DBNum2][$-804]G/通用格式")&"分"))),(TEXT(INT(A1*100)-INT(A1*10)*10,"[DBNum2][$-804]G/通用格式")&"分")))),"(¥",FIXED(A1,2,TRUE),"元)")四、VBA代码法(自定义函数)Public Function BigNum(xiaoxie As Currency)Application.VolatileDim fuhao As Stringfuhao = ""If xiaoxie < 0 Thenxiaoxie = -xiaoxiefuhao = "负"End IfIf xiaoxie = 0 ThenBigNum = "零元整"ElseConst cNum = "零壹贰叁肆伍陆柒捌玖-万仟佰拾亿仟佰拾万仟佰拾元角分"Const cCha = "零仟零佰零拾零零零零零亿零万零元亿万零角零分零整-零零零零零亿万元亿零整整"BigNum = ""sNum = Trim(Str(Int(Round(xiaoxie, 2) * 100)))For i = 1 To Len(sNum)BigNum = BigNum + Mid(cNum, (Mid(sNum, i, 1)) + 1, 1) + Mid(cNum, 26 - Len(sNum) + i, 1)Next iFor i = 0 To 11BigNum = Replace(BigNum, Mid(cCha, i * 2 + 1, 2), Mid(cCha, i + 26, 1))Next iBigNum = fuhao + BigNumEnd IfEnd Function上面四种办法中,方法一和方法四等价;方法二、三和方法一、四的区别只是整数部分为零时,方法一、四不显示“零元”,而直接显示“角分”;方法三在方法2的基础上加上了数字显示,下面是不同数据在四种方法中的显示结果:原始数据方法一方法二方法三方法四0.12 壹角贰分零元壹角贰分零元壹角贰分(¥0.12元) 壹角贰分1.02 壹元零贰分壹元零角贰分壹元贰分(¥1.02元) 壹元零贰分1001001 壹佰万壹仟零壹元整壹佰万壹仟零壹元整壹佰万壹仟零壹元整(¥1001001.00元) 壹佰万壹仟零壹元整0 零元整零元整零元整(¥0.00元) 零元整-25001 负贰万伍仟零壹元整负贰万伍仟零壹元整-贰万伍仟零壹元整(¥-25001.00元) 负贰万伍仟零壹元整这个功能更强大、全面下面是转的其他朋友的VBA作品,功能更为强大:Public Function AAA(number As Variant) As StringIf (IsNull(number)) ThenAAA = "错误:传入负值或Null值"ElseSelect Case numberCase 0: AAA = "零"Case 1: AAA = "壹"Case 2: AAA = "贰"Case 3: AAA = "叁"Case 4: AAA = "肆"Case 5: AAA = "伍"Case 6: AAA = "陆"Case 7: AAA = "柒"Case 8: AAA = "捌"Case 9: AAA = "玖"Case 10 ^ 1: AAA = "分"Case 10 ^ 2: AAA = "角"Case 10 ^ 3: AAA = "元"Case 10 ^ 4, 10 ^ 8, 10 ^ 12: AAA = "拾"Case 10 ^ 5, 10 ^ 9, 10 ^ 13: AAA = "佰"Case 10 ^ 6, 10 ^ 10, 10 ^ 14: AAA = "仟"Case 10 ^ 7: AAA = "萬"Case 10 ^ 11: AAA = "亿"End SelectEnd IfEnd FunctionPublic Function abc(number As Variant, canshu As Long) As StringDim C, D, Y, X, Z As StringDim A, b, kA = Int(number * 100 + 0.5)b = Len(CStr(A))D = CStr(A)If (b > 14) Then MsgBox "数字过大无法转换": Exit FunctionIf (number < 0) Then MsgBox "错误:不可传入负值": Exit FunctionIf A = 0 Then abc = "": Exit FunctionFor k = 1 To bSelect Case canshuCase 1Y = AAA(Mid(D, b - k + 1, 1)) + AAA(10 ^ k)Select Case kCase 1If Mid(D, b, 1) = "0" Then C = "整" Else C = Y + CCase 2, 4, 5, 6, 8, 9, 10, 12, 13, 14If Mid(D, b - k + 1, 2) = "00" Then C = C _Else: _If Mid(D, b - k + 1, 1) = "0" And Mid(D, b - k + 2, 1) <> "0" Then _ C = "零" + C Else: C = Y + CCase 7If b >= 11 ThenIf Mid(D, b - k - 2, 4) = "0000" ThenC = CElseIf Mid(D, b - k + 1, 1) = "0" And Mid(D, b - k + 2, 1) = "0" _Then C = AAA(10 ^ k) + C _Else: If Mid(D, b - k + 1, 1) = "0" And Mid(D, b - k + 2, 1) <> "0" _ Then C = AAA(10 ^ k) + "零" + C Else: C = Y + CEnd IfElseIf Mid(D, b - k + 1, 1) = "0" And Mid(D, b - k + 2, 1) = "0" _Then C = AAA(10 ^ k) + C _Else: If Mid(D, b - k + 1, 1) = "0" And Mid(D, b - k + 2, 1) <> "0" _ Then C = AAA(10 ^ k) + "零" + C Else: C = Y + CEnd IfCase 3, 11If Mid(D, b - k + 1, 1) = "0" And Mid(D, b - k + 2, 1) = "0" _Then C = AAA(10 ^ k) + C _Else: If Mid(D, b - k + 1, 1) = "0" And Mid(D, b - k + 2, 1) <> "0" _Then C = AAA(10 ^ k) + "零" + C Else: C = Y + CEnd SelectCase 2C = AAA(Mid(D, b - k + 1, 1)) + " " + CCase 3C = AAA(Mid(D, b - k + 1, 1)) + AAA(10 ^ k) + CEnd SelectNextabc = CEnd Function好,我也来发一个Function dxje(q)ybb = Round(q * 100)y = Int(ybb / 100)j = Int(ybb / 10) - y * 10f = ybb - y * 100 - j * 10zy = Application.WorksheetFunction.Text(y, "[dbnum2]")zj = Application.WorksheetFunction.Text(j, "[dbnum2]")zf = Application.WorksheetFunction.Text(f, "[dbnum2]")dxje = zy & "元" & "整"d1 = zy & "元"If f <> 0 And j <> 0 Thendxje = d1 & zj & "角" & zf & "分" If y = 0 Thendxje = zj & "角" & zf & "分"End IfEnd IfIf f = 0 And j <> 0 Thendxje = d1 & zj & "角" & "整"If y = 0 Thendxje = zj & "角" & "整"End IfEnd IfIf f <> 0 And j = 0 Thendxje = d1 & zj & zf & "分"If y = 0 Thendxje = zf & "分"End IfEnd IfIf q = "" Thendxje = 0End IfEnd Function。
using System;namespace HaiNuo{/***************************************************************************************** * 类名:DecimalToUpper* 功能:把金额数据从小写转换为大写* 限制条件:金额小于一万亿,且少于两位小数* 作者:雷俊强junqiang_china@* 日期:2003-5-6* 用法:DecimalToUpper x = new DecimalToUpper();* this.textBox2.Text = x.ToUpper(d);* 欢迎下载、使用** FOR my wife and my son******************************************************************************************/public class DecimalToUpper{public DecimalToUpper(){//// TODO: 在此处添加构造函数逻辑//}/// <summary>/// 小写金额转换为大写金额,其他条件:金额小于一万亿,最多两位小数/// </summary>/// <param name="d">源金额,d 《1000000000000.00(一万亿),且最多两位小数</param>/// <returns>结果,大写金额</returns>public string ToUpper(decimal d){if (d == 0)return "零元整";string je = d.ToString("####.00");if (je.Length > 15)return "";je = new String('0',15 - je.Length) + je; //若小于15string stry = je.Substring(0,4);string strw = je.Substring(4,4);string strg = je.Substring(8,4);string strf = je.Substring(13,2);string str1 = "",str2 = "",str3 = "";str1 = this.getupper(stry,"亿");str2 = this.getupper(strw,"万");str3 = this.getupper(strg,"元");string str_y = "", str_w = "";if (je[3] == '0' || je[4] == '0') / str_y = "零";if (je[7] == '0' || je[8] == '0') / str_w = "零";string ret = str1 + str_y + str2 + str_w + str3;//亿,万,元的三个大写合并for (int i = 0 ;i < ret.Length;i++){if (ret[i] != '零'){ret = ret.Substring(i);break;}}for (int i = ret.Length - 1;i > -1 ;i--) //去掉最后的{if (ret[i] != '零'){ret = ret.Substring(0,i+1);break;}}if (ret[ret.Length - 1] != '元')ret = ret + "元";if (ret == "零零元")ret = "";if (strf == "00"){ret = ret + "整";}else{string tmp = "";tmp = this.getint(strf[0]);if (tmp == "零")ret = ret + tmp;elseret = ret + tmp + "角";tmp = this.getint(strf[1]);if (tmp == "零")ret = ret + "整";elseret = ret + tmp + "分"; }if (ret[0] == '零'){ret = ret.Substring(1);}return ret;}/// <summary>/// 把一个单元转为大写,如亿单元,万单元,个单元/// </summary>/// <param name="str">这个单元的小写数字(4位长,若不足,则前面补零)</param> /// <param name="strDW">亿,万,元</param>/// <returns>转换结果</returns>private string getupper(string str,string strDW){if (str == "0000")return "";string ret = "";string tmp1 = this.getint(str[0]) ; string tmp2 = this.getint(str[1]) ; string tmp3 = this.getint(str[2]) ; string tmp4 = this.getint(str[3]) ; if (tmp1 != "零"){ret = ret + tmp1 + "仟";}else{ret = ret + tmp1;}if (tmp2 != "零"){ret = ret + tmp2 + "佰";}else{if (tmp1 != "零")ret = ret + tmp2;}if (tmp3 != "零"){ret = ret + tmp3 + "拾";}else{if (tmp2 != "零")ret = ret + tmp3;}if (tmp4 != "零"){ret = ret + tmp4 ;}if (ret[0] == '零')ret = ret.Substring(1);if (ret[ret.Length - 1] == '零') / ret = ret.Substring(0,ret.Length - 1);return ret + strDW;}/// <summary>/// 单个数字转为大写/// </summary>/// <param name="c">小写阿拉伯数字0---9</param> /// <returns>大写数字</returns>private string getint(char c){string str = "";switch ( c ){case '0':str = "零";break;case '1':str = "壹";break;case '2':str = "贰";break;case '3':str = "叁";break;case '4':str = "肆";break;case '5':str = "伍";break;case '6':str = "陆";break;case '7':str = "柒";break;case '8':str = "拐";break;case '9':str = "玖";break;}return str;}}}。