数字金额小写转大写函数
Office系统语言会影响以下公式的使用,
中文语言格式下:
=IF(A1<=0,,TEXT(INT(A1),"[dbnum2]人民币G/通用格式")&"元"&IF(INT(A1*10)-
INT(A1)*10=0,IF(INT(A1)*(INT(A1*100)-INT(A1*10)*10)=0,"","零"),TEXT(INT(A1*10)-
INT(A1)*10,"[dbnum2]")&"角")&IF((INT(A1*100)-INT(A1*10)*10)=0,"整",TEXT((INT(A1*100)-INT(A1*10)*10),"[dbnum2]")&"分"))
打开EXCEL表格,A1输入小写金额,在C1列输入:=SUBSTITUTE(SUBSTITUTE(IF(A1>-0.5%,,"负")&TEXT(INT(FIXED(ABS(A1))),"[dbnum2]G/通用格式
元;;")&TEXT(RIGHT(FIXED(A1),2),"[dbnum2]0角0分;;"&IF(ABS(A1)>1%,"整",)),"零角",IF(ABS(A1)<1,,"零")),"零分","整")
=IF(H4<=0,,TEXT(INT(H4),"[dbnum2]人民币G/通用格式")&"元"&IF(INT(H4*10)-
INT(H4)*10=0,IF(INT(H4)*(INT(H4*100)-INT(H4*10)*10)=0,"","零"),TEXT(INT(H4*10)-INT(H4)*10,"[dbnum2]")&"角")&IF((INT(H4*100)-INT(H4*10)*10)=0,"整
",TEXT((INT(H4*100)-INT(H4*10)*10),"[dbnum2]")&"分"))
=IF(MOD(A2,1)=0,TEXT(INT(A2),"[DBNUM2]")&"元"&"整
",TEXT(INT(A2),"[DBNUM2]")&"元"&TEXT(MID(A2,LEN(INT(A2))+2,1),"[DBNUM2]D角")&TEXT(MID(A2,LEN(INT(A2))+3,1),"[DBNUM2]D分"))
英语格式
=SUBSTITUTE(SUBSTITUTE(TEXT(INT(G3),"[DBNum2][$-804]G/通用格式元"&IF(INT(G3)=G3,"整",""))&TEXT(MID(G3,FIND(".",G3&".0")+1,1),"[DBNum2][$-804]G/通用格式角
")&TEXT(MID(G3,FIND(".",G3&".0")+2,1),"[DBNum2][$-804]G/通用格式分"),"零角","零"),"零分","")。
informix小写金额转大写函数
informix小写金额转大写函数在Informix中,可以使用以下函数将小写金额转换为大写形式:1.创建一个存储过程:```sqlCREATE PROCEDURE convert_amount_to_words (in_amount DECIMAL(10,2), out_words VARCHAR(500))RETURNINGVARCHAR(500);DEFINE units VARCHAR(10);DEFINE tens VARCHAR(10);DEFINE hundreds VARCHAR(10);DEFINE thousands VARCHAR(10);DEFINE words VARCHAR(500);DEFINE temp_amount DECIMAL(10,2);DEFINE integer_amount DECIMAL(10);DEFINE decimal_amount DECIMAL(2);DEFINE temp_words VARCHAR(100);LET units = 'ZERO', 'ONE', 'TWO', 'THREE', 'FOUR', 'FIVE', 'SIX', 'SEVEN', 'EIGHT', 'NINE';LET tens = '', '', 'TWENTY', 'THIRTY', 'FORTY', 'FIFTY','SIXTY', 'SEVENTY', 'EIGHTY', 'NINETY';LET hundreds = '', 'ONE HUNDRED', 'TWO HUNDRED', 'THREE HUNDRED', 'FOUR HUNDRED','FIVEHUNDRED','SIXHUNDRED','SEVENHUNDRED','EIGHTHUNDRED','NI NEHUNDRED';LET thousands = '', 'ONE THOUSAND', 'TWO THOUSAND', 'THREE THOUSAND', 'FOUR THOUSAND','FIVETHOUSAND','SIXTHOUSAND','SEVENTHOUSAND','EIGHTTHOUSAND' ,'NINETHOUSAND';LET temp_amount = TRUNC(in_amount, 2);LET integer_amount = TRUNC(temp_amount);LET decimal_amount = (temp_amount - integer_amount) * 100;IF integer_amount = 0 THENLET words = units[0] , ' DOLLARS AND ' ,LTRIM(decimal_amount) , '/100';ELSEIF integer_amount / 1000 > 0 THENLET temp_words = convert_amount_to_words(integer_amount / 1000, '');LET words = temp_words , ' THOUSAND';LET integer_amount = integer_amount MOD 1000;ENDIF;IF integer_amount / 100 > 0 THENLET words = words , ' ' , hundreds[TRUNC(integer_amount / 100)];LET integer_amount = integer_amount MOD 100;ENDIF;IF integer_amount / 10 > 1 THENLET words = words , ' ' , tens[TRUNC(integer_amount / 10)];LET integer_amount = integer_amount MOD 10;ENDIF;IF integer_amount > 0 THENLET words = words , ' ' , units[integer_amount];ENDIF;LET words = words , ' DOLLARS AND ' ,LTRIM(decimal_amount) , '/100';ENDIF;LET out_words = words;RETURN out_words;ENDPROCEDURE;```2.调用存储过程:```sqlLET amount = 1200.45;LET words = '';CALL convert_amount_to_words(amount, words);SELECT words;```在上述代码中,存储过程`convert_amount_to_words`接收一个小数类型的金额参数`in_amount`和一个字符类型的输出参数`out_words`,返回一个字符类型的金额大写形式。
excel 中文大写 函数
excel 中文大写函数Excel中文大写函数【】Excel中的中文大写函数【】是一种非常实用的函数,它可以将阿拉伯数字转换为对应的中文大写,方便我们在编写报表、填写发票等场景中使用中文大写金额。
本文将一步一步地回答关于Excel中的中文大写函数的问题,并详细说明其使用方法和示例。
一、什么是中文大写函数【】?Excel中的中文大写函数【】是一种将阿拉伯数字转换为对应的中文大写金额的函数。
它的输入参数是一个数字(范围在1到999999999.99之间),输出结果则是相应的中文大写金额,这在需要将数字金额转换为中文大写的场合非常有用。
二、中文大写函数【】的语法是什么?中文大写函数【】的语法如下:【参数】:需要转换为中文大写的数字金额。
其中,【参数】可以是单个的数字、单元格引用或其他公式。
这意味着我们可以直接在公式中引用某个单元格的值,然后通过中文大写函数【】将其转换为中文大写金额。
三、中文大写函数【】的使用示例下面,我们将通过一个具体的示例来演示中文大写函数【】的使用方法。
例如,我们要将数字金额5000.25转换为中文大写金额。
我们可以在Excel 的某个单元格中输入如下公式:【=中文大写(5000.25)】按下回车键后,该单元格将输出“伍仟圆贰毛伍分”。
这样,我们就成功地将阿拉伯数字金额转换为中文大写金额。
实际使用中,我们也可以引用单元格中的值,而不是直接在公式中输入阿拉伯数字。
例如,我们在单元格A1中输入数字金额5000.25,在B1单元格中输入公式:【=中文大写(A1)】这样,B1单元格也会正确地输出“伍仟圆贰毛伍分”。
四、中文大写函数【】的注意事项虽然中文大写函数【】非常实用,但我们在使用中还是要注意一些问题。
首先,该函数只能将范围在1到999999999.99之间的数字转换为中文大写,超出范围的部分会报错。
因此,在使用函数时,我们要确保输入的数字在这一范围内。
其次,该函数转换出来的中文大写金额是以“圆”为单位的,如果需要转换为其他货币单位的大写金额,就需要在函数外部进行处理。
金额大写的函数
金额大写的函数金额大写的函数在日常生活中,我们经常需要将数字金额转换为大写金额,以便于书写和阅读。
因此,编写一个金额大写的函数是非常有用的。
下面就来介绍一下如何编写一个金额大写的函数。
首先,我们需要明确一下转换的规则。
在中文中,数字金额的转换规则是以“万”为一个单位,每四位数字为一个小节,小节之间用“亿”、“万”、“元”等单位分隔。
例如,1000000元可以转换为“壹佰万元整”,100000000元可以转换为“壹亿元整”。
接下来,我们可以根据这个规则编写一个金额大写的函数。
具体实现如下:```pythondef amount_to_upper(amount):# 定义数字和单位的对应关系num_dict = {'0': '零','1': '壹','2': '贰', '3': '叁', '4': '肆', '5': '伍', '6': '陆', '7': '柒', '8': '捌', '9': '玖' }unit_dict = { 0: '',1: '拾',2: '佰',3: '仟',4: '万',5: '拾万', 6: '佰万', 7: '仟万', 8: '亿',9: '拾亿', 10: '佰亿', 11: '仟亿' }# 将金额转换为字符串,并去掉小数点amount_str = str(int(amount))# 计算金额的长度length = len(amount_str)# 定义结果字符串result = ''# 定义是否需要添加“零”的标志need_zero = False# 循环处理每一位数字for i in range(length):# 取出当前位的数字num = amount_str[i]# 计算当前位的单位unit = unit_dict[length - i - 1]# 如果当前位是0,则不需要添加“零” if num == '0':need_zero = Falseelse:# 如果需要添加“零”,则先添加“零” if need_zero:result += num_dict['0']# 添加当前位的数字和单位result += num_dict[num] + unit# 标记需要添加“零”need_zero = True# 如果当前位是万或亿,则需要重新标记“需要添加零”的标志 if unit in ['万', '亿']:need_zero = False# 如果金额是整数,则添加“整”字if amount == int(amount):result += '整'# 返回结果字符串return result```使用这个函数非常简单,只需要将金额作为参数传入即可。
Excel中金额大小写转换(解决负数无法显示问题)
Excel中金额大小写转换(解决负数无法显示问题)一、Excel自动转换数字大小写具体的操作步骤如下:1. 启动excel。
按“alt+f11”快捷键打开“visual basic编辑器”。
2. 在“visual basic编辑器”中,单击“插入”菜单栏中的“模块”命令,插入一个模块。
双击左侧“工程”窗口中的“模块1”选项,在窗口右边展开“模块1(代码)”编辑窗口,然后输入如下代码:Function NtoC(n) 'n as singleConstcNum = "零壹贰叁肆伍陆柒捌玖-万仟佰拾亿仟佰拾万仟佰拾元角分"ConstcCha = "零仟零佰零拾零零零零零亿零万零元亿万零角零分零整-零零零零零亿万元亿零整整"NtoC = ""sNum = Trim(Str(Int(n * 100)))For i = 1 To Len(sNum) '逐位转换NtoC = NtoC + Mid(cNum, (Mid(sNum, i, 1)) + 1, 1) + Mid(cNum, 26 - Len(sNum) + i, 1)NextFor i = 0 To 11 '去掉多余的零NtoC = Replace(NtoC, Mid(cCha, i * 2 + 1, 2), Mid(cCha, i + 26, 1))NextEnd Function3.练习A1=-10135.33 A2=NTOC(ABS(A1))二、Excel中金额大小写转换公式公式1:“=IF(ROUND(E19,2)=0,"",IF(ROUND(ABS(E19),2)>=1,TEXT(INT(ROUND(ABS(E19),2)),"[DBNum2]" )&"元","")&IF(RIGHT(TEXT(E19,".00"),2)*1=0,"整",IF(RIGHT(TEXT(E19,".00"),4)*1>=1,IF(RIGHT(TEXT(E19,".00"),2)*1>9,"","零"),IF(ROUND(ABS(E19),2)>=1,"零",""))&IF(RIGHT(TEXT(E19,".00"),2)*1>9,TEXT(LEFT(RIGHT(TEXT(E19,".00"),2)),"[DBNum2]")&"角","")&IF(RIGHT(TEXT(E19,".00"))*1>0,TEXT(RIGHT(TEXT(E19,".00")),"[DBNum2]")&"分","整")))”公式2:“=IF(F4<1,IF(F4<0.1,TEXT(INT(F4*100),"[DBNum2]G/通用格式")&"分",IF((INT(F4*100)-INT(F4*10)*10=0),TEXT(INT(F4*10),"[DBNum2]G/通用格式")&"角整",TEXT(INT(F4*10),"[DBNum2]G/通用格式")&"角"&TEXT(INT(F4*100)-INT(F4*10)*10,"[DBNum2]G/通用格式")&"分")),TEXT(INT(F4),"[DBNum2]G/通用格式"&"元")&IF((INT(F4*10)-INT(F4)*10)=0,IF((INT(F4*100)-INT(F4*10)*10)=0,"","零"),IF((INT(F4*0.1)-INT(F4)*0.1)=0,"零","")&TEXT(INT(F4*10)-INT(F4)*10,"[DBNum2]G/通用格式")&"角")&IF((INT(F4*100)-INT(F4*10)*10)=0,"整",TEXT(INT(F4*100)-INT(F4*10)*10,"[DBNum2]G/通用格式")&"分"))”公式3:“=IF(B10<1,IF(B10<0.1,TEXT(INT(B10*100),"[DBNum2]G/通用格式")&"分",IF((INT(B10*100)-INT(B10*10)*10=0),TEXT(INT(B10*10),"[DBNum2]G/通用格式")&"角整",TEXT(INT(B10*10),"[DBNum2]G/通用格式")&"角"&TEXT(INT(B10*100)-INT(B10*10)*10,"[DBNum2]G/通用格式")&"分")),TEXT(INT(B10),"[DBNum2]G/通用格式"&"元")&IF((INT(B10*10)-INT(B10)*10)=0,IF((INT(B10*100)-INT(B10*10)*10)=0,"","零"),IF((INT(B10*0.1)-INT(B10)*0.1)=0,"零","")&TEXT(INT(B10*10)-INT(B10)*10,"[DBNum2]G/通用格式")&"角")&IF((INT(B10*100)-INT(B10*10)*10)=0,"整",TEXT(INT(B10*100)-INT(B10*10)*10,"[DBNum2]G/通用格式")&"分"))”。
在Excel表格中数字转金额
在Excel表格中,怎样将带小数点的小写数字转换成中文大写?比如说在表格中输入12.326然后转换成中文大写"壹拾贰点叁贰陆.补充 - 3个月前在同一单元格中,再次输入不同的数字,中文大写也跟着变化补充 - 3个月前特别说明,此单元格的数字不是金额,只是普通带小数点的数字,小数点后有一至四位小数.最佳答案 - 由投票者2个月前选出问题:在Excel表格中,怎样将带小数点的小写数字转换成中文大写?比如说在表格中输入12.326然后转换成中文大写"壹拾贰点叁贰陆.在同一单元格中,再次输入不同的数字,中文大写也跟着变化回答:一、在输入的当前单元格直接转换,没有现成的格式函数。
但通过VBA代码还是能够实现的。
(VBA代码我在后面讲)如果想简单一点的话,通过相玲单元格转换大写还是方便一点。
如果在 A1 输入小写,就在 B1 输入如下公式:=IF(A1>0,SUBSTIT UTE((TEXT(A1,"[DBnum2]")),".","点"),IF(A1<0,"负"&SUBSTIT UTE((TEXT(ABS(A1),"[DBnum2]")),".","点"),""))上面的公式中考虑了输入负数和零的问题,如不考虑负数和零,公式可以简化如下:=IF(A1>0,SUBSTIT UTE((TEXT(A1,"[DBnum2]")),".","点"),"")二、如果你坚持要在输入数据的单元格中直接转换中文大写,只好用VBA程序代码了,只是比较烦。
代码如下:Private Sub Workshe et_Cha nge(ByVal aa As Range)On Error GoTo errorIf aa.Column= 1 ThenSelectCase aaCase Is > 0aa = Replace(Applica tion.Text(aa, "[DBnum2]"), ".", "点")Case Is < 0aa = "负" & Replace(Applica tion.Text(Abs(aa), "[DBnum2]"), ".", "点") Case Is = 0aa = ""End SelectEnd Iferror: Exit SubEnd Sub说明:1。
工具函数:人民币数字转大写
⼯具函数:⼈民币数字转⼤写/*《正确填写票据和结算凭证的基本规定》银⾏、单位和个⼈填写的各种票据和结算凭证是办理⽀付结算和现⾦收付的重要依据,直接关系到⽀付结算的准确、及时和安全。
票据和结算凭证是银⾏、单位和个⼈凭以记载账务的会计凭证,是记载经济业务和明确经济责任的⼀种书⾯证明。
因此⼀、中⽂⼤写⾦额数字到"元"为⽌的,在"元"之后,应写"整"(或"正")字,在"⾓"之后,可以不写"整"(或"正")字。
⼤写⾦额数字有"分"的,"分"后⾯不写"整"(或"正")字。
⼆、中⽂⼤写⾦额数字前应标明"⼈民币"字样,⼤写⾦额数字有"分"的,"分"后⾯不写"整"(或"正")字。
三、中⽂⼤写⾦额数字前应标明"⼈民币"字样,⼤写⾦额数字应紧接"⼈民币"字样填写,不得留有空⽩。
⼤写⾦额数字前未印"⼈民币"字样的,应加填"⼈民币"三字。
在票据和结算凭证⼤写⾦额栏内不得预印固定的"仟、佰、拾、万、仟、佰、拾、元、四、阿拉伯数字⼩写⾦额数字中有"0"时,中⽂⼤写应按照汉语语⾔规律、⾦额数字构成和防⽌涂改的要求进⾏书写。
举例如下:1·阿拉伯数字中间有"0"时,中⽂⼤写要写"零"字,如¥1409.50,应写成⼈民币陆壹仟肆佰零玖元伍⾓。
2·阿拉伯数字中间连续有⼏个"0"时,中⽂⼤写⾦额中间可以只写⼀个"零"字,如¥6007.14,应写成⼈民币陆仟零柒元壹⾓肆分。
word小写金额转换大写金额公式
word小写金额转换大写金额公式
首先,我们需要了解一下小写金额转换大写金额的规则:
1. 小写金额的每一位数字都有对应的大写金额,如:0对应“零”,1对应“壹”,2对应“贰”,3对应“叁”,4对应“肆”,5对应“伍”,6对应“陆”,7对应“柒”,8对应“捌”,9对应“玖”。
2. 小写金额的每一位数字都有对应的单位,如:个位数字对应“元”,十位数字对应“拾”,百位数字对应“佰”,千位数字对应“仟”,万位数字对应“万”,十万位数字对应“拾万”,百万位数字对应“佰万”,千万位数字对应“仟万”,亿位数字对应“亿”,十亿位数字对应“拾亿”,百亿位数字对应“佰亿”,千亿位数字对应“仟亿”。
3. 小写金额的每一位数字都有对应的节权位,如:个位数字对应“角”,十位数字对应“分”,百位数字对应“厘”。
根据以上规则,我们可以构建一个小写金额转换大写金额的公式:
设小写金额为X,则大写金额为Y,则有:
Y=X/10000000000*“仟亿”+X/100000000%10*“佰
亿”+X/10000000%10*“拾
亿”+X/1000000%10*“亿”+X/100000%10*“仟
万”+X/10000%10*“佰万”+X/1000%10*“拾
万”+X/100%10*“万”+X/10%10*“仟”+X/1%10*“佰”+X/0.1%10*“拾”+X/0.01%10*“元”+X/0.001%10*“角”+X/0.0001%10*“分”+ X/0.00001%10*“厘”。
最后,我们可以根据上述公式,将小写金额转换为大写金额。
数字大小写函数转换
数字大小写函数转换数字大小写函数转换数字大小写函数转换是一种常见的编程任务,通常用于将阿拉伯数字转换为中文数字或英文数字,或者将大小写字母相互转换。
在Python 编程语言中,我们可以使用内置的函数来执行这些转换任务。
数字转换函数将阿拉伯数字转换为中文数字或英文数字是一个常见的任务,Python 提供了内置的函数来执行这些转换。
下面是一些常见的数字转换函数。
1. 将阿拉伯数字转换为中文数字Python提供了一个内置的函数`num2cn(num)`,用于将阿拉伯数字转换为中文数字。
例如,`num2cn(123)`将返回字符串`一百二十三`。
2. 将阿拉伯数字转换为英文数字Python提供了一个内置的函数`num2word(num)`,用于将阿拉伯数字转换为英文数字。
例如,`num2word(123)`将返回字符串`onehundred twenty-three`。
大小写转换函数Python提供了一些内置的函数来执行大小写相互转换的任务。
1. 将字符串转换为小写Python提供了一个内置的函数`str.lower()`,用于将字符串转换为小写。
例如,`'HELLO'.lower()`将返回字符串`hello`。
2. 将字符串转换为大写Python提供了一个内置的函数`str.upper()`,用于将字符串转换为大写。
例如,`'hello'.upper()`将返回字符串`HELLO`。
3. 将字符串首字母转换为大写Python提供了一个内置的函数`str.capitalize()`,用于将字符串的首字母转换为大写。
例如,`'hello world'.capitalize()`将返回字符串`Hello world`。
4. 将字符串中的每个单词的首字母转换为大写Python提供了一个内置的函数`str.title()`,用于将字符串中的每个单词的首字母转换为大写。
excel中人民币金额大写的函数
excel中人民币金额大写的函数在Excel 中,如果你想将人民币金额转换为大写形式,你可以使用以下步骤:1. 下载并安装VBA 代码模块:-打开Excel 文件。
-按下`Alt` + `F11` 打开Visual Basic for Applications (VBA) 编辑器。
-在菜单中选择"插入" -> "模块",这将创建一个新的代码模块。
2. 复制并粘贴VBA 代码:-将以下VBA 代码复制并粘贴到新建的代码模块中:```vbaFunction RMBFormat(ByVal MyNumber)Dim Units As StringDim DecimalPlace As StringDim TempStr As StringDim DecimalSeparator As StringDim UnitName As StringDim Count As IntegerDim DecimalSeparatorLength As IntegerReDim Place(9) As StringPlace(2) = " Thousand "Place(3) = " Million "Place(4) = " Billion "Place(5) = " Trillion "' String representation of amount.MyNumber = Trim(CStr(MyNumber))' Position of decimal place 0 if none.DecimalPlace = InStr(MyNumber, ".")' Convert cents and set MyNumber to dollar amount.If DecimalPlace > 0 ThenTempStr = GetTens(Left(Mid(MyNumber, DecimalPlace + 1) & "00", 2))MyNumber = Trim(Left(MyNumber, DecimalPlace - 1))End IfCount = 1Do While MyNumber <> ""TempStr = GetHundreds(Right(MyNumber, 3))If TempStr <> "" Then Units = Place(Count) & TempStr & UnitsIf Len(MyNumber) > 3 ThenMyNumber = Left(MyNumber, Len(MyNumber) - 3)ElseMyNumber = ""End IfCount = Count + 1LoopRMBFormat = Units & GetTens(TempStr)End FunctionPrivate Function GetTens(TensText)Dim Result As StringResult = "" ' Null out the temporary function value.If Val(Left(TensText, 1)) = 1 Then ' If value between 10-19...Select Case Val(TensText)Case 10: Result = "Ten"Case 11: Result = "Eleven"Case 12: Result = "Twelve"Case 13: Result = "Thirteen"Case 14: Result = "Fourteen"Case 15: Result = "Fifteen"Case 16: Result = "Sixteen"Case 17: Result = "Seventeen"Case 18: Result = "Eighteen"Case 19: Result = "Nineteen"Case ElseEnd SelectElse ' If value between 20-99...Select Case Val(Left(TensText, 1))Case 2: Result = "Twenty "Case 3: Result = "Thirty "Case 4: Result = "Forty "Case 5: Result = "Fifty "Case 6: Result = "Sixty "Case 7: Result = "Seventy "Case 8: Result = "Eighty "Case 9: Result = "Ninety "Case ElseEnd SelectResult = Result & GetDigit _(Right(TensText, 1)) ' Retrieve ones place.End IfGetTens = ResultEnd FunctionPrivate Function GetDigit(Digit)Select Case Val(Digit)Case 1: GetDigit = "One"Case 2: GetDigit = "Two"Case 3: GetDigit = "Three"Case 4: GetDigit = "Four"Case 5: GetDigit = "Five"Case 6: GetDigit = "Six"Case 7: GetDigit = "Seven"Case 8: GetDigit = "Eight"Case 9: GetDigit = "Nine"Case Else: GetDigit = ""End SelectEnd FunctionPrivate Function GetHundreds(MyNumber)Dim Result As StringIf Val(MyNumber) = 0 Then Exit FunctionMyNumber = Right("000" & MyNumber, 3)' Convert the hundreds place.If Mid(MyNumber, 1, 1) <> "0" ThenResult = GetDigit(Mid(MyNumber, 1, 1)) & " Hundred "End If' Convert the tens and ones place.Result = Result & GetTens(Mid(MyNumber, 2))GetHundreds = ResultEnd Function```3. 使用自定义函数:-保存并关闭VBA 编辑器。
DELPHI最精简的小写金额转大写的函数
最精简的小写金额转大写的函数function NumToChar(const n: Real): string; //可以到万亿,并且可以随便扩大范围const cNum: WideString = '零壹贰叁肆伍陆柒捌玖--万仟佰拾亿仟佰拾万仟佰拾元角分';cCha:array[0..1, 0..12]of string =(( '零元','零拾','零佰','零仟','零万','零亿','亿万','零零零','零零','零万','零亿','亿万','零元'), ( '元','零','零','零','万','亿','亿','零','零','万','亿','亿','元'));var i : Integer;sNum,sTemp : WideString;beginresult :='';sNum := format('%15d',[round(n * 100)]);for i := 0 to 14 dobeginstemp := copy(snum,i+1,1);if stemp=' ' then continueelse result := result + cNum[strtoint(stemp)+1] + cNum[i+13];end;for i:= 0 to 12 doResult := StringReplace(Result, cCha[0,i], cCha[1,i], [rfReplaceAll]);if pos('零分',result)=0then Result := StringReplace(Result, '零角', '零', [rfReplaceAll])else Result := StringReplace(Result, '零角','整', [rfReplaceAll]);Result := StringReplace(Result, '零分','', [rfReplaceAll]);end;function Changdx2(mmje: Double): String;const s1: String = '零壹贰叁肆伍陆柒捌玖';s2: String = '分角元拾佰仟万拾佰仟亿拾佰仟万';function StrTran(const S, S1, S2: String): String;beginResult := StringReplace(S, S1, S2, [rfReplaceAll]);end;var s, dx: String;i, Len: Integer;beginif mmje < 0 thenbegin dx := '负';mmje := -mmje;end;s := Format('%.0f', [mmje*100]);Len := Length(s);for i := 1 to Len dodx := dx + Copy(s1, (Ord(s[i]) - Ord('0'))*2 + 1, 2) + Copy(s2, (Len - i)*2 + 1, 2);dx := StrTran(StrTran(StrTran(StrTran(StrTran(dx, '零仟', '零'), '零佰', '零'), '零拾', '零'), '零角', '零'), '零分', '整');dx := StrTran(StrTran(StrTran(StrTran(StrTran(dx, '零零', '零'), '零零', '零'), '零亿', '亿'), '零万', '万'), '零元', '元');if dx = '整' then Result := '零元整'else Result := StrTran(StrTran(dx, '亿万', '亿零'), '零整', '整');end;。
