会计金额小写转大写

合集下载

小写金额转换为大写金额(C实现)

小写金额转换为大写金额(C实现)

前言银行、单位和个人填写的各种票据和结算凭证是办理支付结算和现金收付的重要依据,直接关系到支付结算的准确、及时和安全。

票据和结算凭证是银行、单位和个人凭以记载帐务的会计凭证,是记载经济业务和明确经济责任的一种书面证明。

因此,填写票据和结算凭证,必须做到标准化、规范化,要要素齐全、数字正确、字迹清晰、不错漏、不潦草,防止涂改。

我的服务需要一个金额转换过程,本来想在网上找,但都是C++、JavaScript、Delphi 的Demo,还没有C的。

索性自己写一个。

参考了其它的转换算法,对我有些启发。

大多的算法都是直接分析字符串生成大写金额,即存在一个假设:源字符串的格式是正确的。

在我的过程中,用状态机的方法分析源字符串,错误时,返回空指针(我可不敢保证传给我的过程的都是##.##)。

分析出源字符串中整数部有多少个数字,是否有小数,统计结果放在一个结构体中,整数和小数部分的数字分别放在两个整形数组里。

有了统计数据就可以生成大写金额了。

转换过程有个难点:要区分万、亿等“段”,特别是个位这个“段”,这个概念是在《小写转大写金额在C++中的实现》文章中提到的。

在下面的程序中用j= ( size - i - 1 ) & 0x3,实际上是j = ( size - i - 1 ) % 4取模,j==0时为段尾,需要特殊处理。

所有的处理都是围绕0来进行的,也就是说,0才是难点。

特殊位置的0,按段分,段中第一个非0数字前的0,可能有多个;段中两个非0数字间的0;段尾的0;个位的0;十分位,角位置的0。

另外,转换的一个重点是大写金额的写法,好像大多的算法都注重转换过程而对这个问题没有深究。

我在文章后面附上转换规则。

下面是代码1./**2.* @brief 将源字符串中的小写金额转换为大写格式3.*4.* @param dest 目的字符串5.* @param src 小写金额字符串6.* @return7.* - NULL 源字符串的格式错误,返回NULL8.* - 非NULL 目的字符串的首地址9.* @note 转换根据:中国人民银行会计司编写的最新《企业、银行正确办理支付结算10.* 指南》的第114页-第115页11.*/12.char* chineseFee( char* dest, char* src )13.{14. enum15. {16.START, //开始17.MINUS, //负号18.ZEROINT, //0整数19.INTEGER, //整数20.DECIMAL, //小数点21.DECIMALfRACTION, //小数位22.END, //结束23.ERROR //错误24. } status = START;25. struct26. {27.int minus; //0为正,1为负28.int sizeInt;29.int sizeDecimal;30.int integer[10];31.int decimal[10];32. } feeInfo;33. char* NumberChar[] =34.{ "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" };35. char* UnitChar[] =36.{ "整", "圆", "拾", "佰","仟", "万", "拾", "佰", "仟", "亿",37. "拾", "佰", "仟", "万亿", "拾", "佰", "仟", "亿亿",38. "角", "分", "负", "人民币" };39.40. int i, j,size; //循环变量41. int zeroTag = 0, //0标志42. decZeroTag = 0;43.44. char* pDest = dest;45. char* pSrc = src;46.47. int* pInt = feeInfo.integer;48. int* pDec = feeInfo.decimal;49.50. //初始化51. feeInfo.sizeInt = 0;52. feeInfo.sizeDecimal = 0;53. feeInfo.minus = 0;54.55. //分析字符串56. while( 1 )57. {58.switch ( *pSrc )59.{60.case '-' :61. status = ( status == START ) ? MINUS : ERROR;62. feeInfo.minus = ( status == MINUS ) ? 1 : 0;63. break;64.case '1' :65.case '2' :66.case '3' :67.case '4' :68.case '5' :69.case '6' :70.case '7' :71.case '8' :72.case '9' :73.case '0' :74. if ( *pSrc == '0' && status == ZEROINT )//|| status== START ) )75. {76.status = ERROR;77.break;78. }79. if ( status == MINUS || status == START || status== INTEGER )80. {81.if ( *pSrc == '0' && ( status == MINUS ||status == START ) )82.status = ZEROINT;83.else84.status = INTEGER;85.*pInt = (*pSrc) - 48;86.++pInt;87.++feeInfo.sizeInt;88. }89. else if ( status == DECIMAL || status ==DECIMALfRACTION )90. {91.status = DECIMALfRACTION;92.*pDec = (*pSrc) - 48;93.++pDec;94.++feeInfo.sizeDecimal;95. }96. else97. {98.status =ERROR;99. }100. break;101.case '.' :102. status = ( status == INTEGER || status == ZEROINT )103. ? DECIMAL : ERROR;104. break;105.case '\0' :106. status = ( status == INTEGER || status == DECIMALfRACTION107.|| status == ZEROINT ) ? END : ERROR;108. break;109.default :110. status = ERROR;111.}112.if ( status == END )113.break;114.else if ( status == ERROR )115.return NULL;116.117.++pSrc;118. }119.120. //只有1位小数时,设置百分位为0,使下面代码不需要区分这两种情况121. if ( feeInfo.sizeDecimal == 1 )122. {123.feeInfo.decimal[ 1 ] = 0;124.++feeInfo.sizeDecimal;125. }126. //判断是否需要打印小数部分,有小数部且十分位和百分位不都为0 127. //需要打印小数部时,zeroTag设为0,否则设为1128. if ( feeInfo.sizeDecimal ==0 //没有小数129.|| ( !feeInfo.decimal[ 0 ] && !feeInfo.decimal[ 1 ] ) ) //小数部都为0130.decZeroTag = 1;131. else132.decZeroTag = 0;133.134. //printf( "int size: %d decimal size: %d\n", feeInfo.sizeInt, feeInfo.sizeDecimal );135.136. strcpy( pDest, UnitChar[ 21 ] ); //初始化目标字符串-人民币137.138. if ( feeInfo.minus ) strcat( pDest, UnitChar[ 20 ] ); //负号139.140. //处理整数部分141. size = feeInfo.sizeInt;142. for( i = 0; i < size; ++i )143. {144.j = size - i - 1 &0x3; //j = 0时为段尾145.if ( feeInfo.integer[ i ] == 0 &&j ) //处理非段尾0146.{147.zeroTag = 1;148.}149.else if ( feeInfo.integer[ i ] == 0 && !j ) //处理段尾0150.{151.if ( feeInfo.sizeInt == 1 &&decZeroTag ) //特殊处理个位0152. strcat( pDest,NumberChar[ feeInfo.integer[ i ] ] );153.if ( feeInfo.sizeInt != 1 || decZeroTag )154. strcat( pDest, UnitChar[ size - i ] );155.zeroTag = 0;156.}157.else//处理非0158.{159.if ( zeroTag )160.{161. strcat( pDest, NumberChar[ 0 ] );162. zeroTag = 0;163.}164.strcat( pDest, NumberChar[ feeInfo.integer[ i ] ] ); 165.strcat( pDest, UnitChar[ size - i ] );166.if ( !j ) zeroTag =0; //如果是段尾,设为非标志167.}168. }169.170. if ( decZeroTag )171. {172.strcat( pDest, UnitChar[ 0 ] );//没有小数部,打印"整"字符173. }174. else175. {176.//十分位177.if ( feeInfo.decimal[ 0 ] )178.{179.strcat( pDest, NumberChar[ feeInfo.decimal[ 0 ] ] );180.strcat( pDest, UnitChar[ 18 ] );181.}182.else if ( feeInfo.sizeInt != 1 || feeInfo.integer[ 0 ] ) 183.{184.strcat( pDest, NumberChar[ feeInfo.decimal[ 0 ] ] );185.}186.187.//百分位不为0时188.if ( feeInfo.decimal[ 1 ] )189.{190.strcat( pDest, NumberChar[ feeInfo.decimal[ 1 ] ] );191.strcat( pDest, UnitChar[ 19 ] );192.}193. }194. return dest;195.}复制代码代码中有些地方没有注释清楚,要是有不明白的可以E-Mail我z_jingwei@。

会计大写金额书写规范

会计大写金额书写规范

会计大写金额书写规范会计大写金额的书写规范是指根据国家财务会计制度和相关法规,将金额数字转换为相应的大写金额文字的一种规范和要求。

大写金额的书写规范主要包括以下几个方面:1. 大写金额的书写形式大写金额一般采用汉字进行书写,如壹、贰、叁等。

在书写时,需要注意各个汉字的字形和笔画的正确书写,要求工整、清晰。

2. 大写金额的单位大写金额的单位主要包括“元、角、分、整”,例如:“壹元整”、“贰角叁分”等。

在书写时,需要正确使用单位,不得省略或者重复使用单位。

3. 大写金额和小写金额的对应关系大写金额和小写金额是一一对应的关系,即每个小写金额数字对应一个大写金额字,例如:“1”对应“壹”、“2”对应“贰”,依此类推。

在书写时,需要准确对应,不得混用或者错误使用。

4. 大写金额的字数限制大写金额的字数一般不超过八个字,例如“壹亿贰仟叁佰肆拾伍万陆仟柒佰捌拾玖元整”,超过八个字的金额可以转换成相应的数字金额进行书写。

5. 大写金额数字的部分转换规则大写金额数字在书写时需要注意一些转换规则,如“10”要写成“拾”,“100”要写成“壹佰”,“1000”要写成“壹仟”。

此外,“0”在某些情况下可忽略不写。

6. 特殊金额书写的规范对于特殊的金额数字,如“1.23”、“1001”,需要按照规范的要求进行书写,例如“壹元贰角叁分”、“壹仟零壹元整”。

7. 大写金额书写示例在实际应用中,可以参考下面的示例进行大写金额的书写:- “壹佰元整”(100元整)- “零角壹分”(0.01元)- “壹仟贰佰叁拾肆元伍角陆分”(1234.56元)- “壹亿元整”(1亿元整)总结起来,会计大写金额的书写规范是非常重要的,它涉及到财务报表的准确性和规范性,对于保证财务信息的真实性和可靠性具有重要意义。

无论是企业还是个人,在书写大写金额时都应严格遵守相关的规范和要求。

会计大小书写规则的

会计大小书写规则的

会计大小写的书写规则如下:
1. 汉字大写金额数字如零、壹、贰、叁、肆、伍、陆、柒、捌、玖、拾、佰、仟、万、亿等,一律用正
楷或者行书体书写,不得用0、一、二、三、四、五、六、七、八、九、十等简化字代替,不得任意自造简化字。

2. 金额数字到元或者角为止的,在“元”或者“角”字之后应当写“整”字或者“正”字;如果数字有
角分的,分位写“0”;如果分位是“0”,则不写“整”或“正”字。

3. 大写金额数字前未印有“人民币”字样的,应加写“人民币”三个字,“人民币”字样和大写金额数
字之间不得留有空白。

4. 阿拉伯小写金额数字前面,均应填写人民币符号“¥”。

5. 阿拉伯小写金额数字要认真填写,不得连写或者改变笔顺。

6. 阿拉伯小写金额数字前应填写人民币符号“¥”,阿拉伯小写金额数字应紧接“¥”填写,不得留有空
白。

7. 凡阿拉伯小写金额数字中有0的,中文大写应按照汉语语言规律和有关要求进行书写。

8. 大写金额到元为止的,后面要加写“整”字;大写金额到角为止的,后面可以不加“整”字,也可以
加“整”字;大写金额到分为止的,后面不可以加“整”字。

9. 阿拉伯小写金额数字中间有0时,汉字大写金额要写“零”字;阿拉伯小写金额数字中间连续有几个0
时,汉字大写金额只写一个“零”字;阿拉伯小写金额数字末尾连续有几个0时,汉字大写金额可以只写一个“零”字,也可以不写“零”字。

引用EXCEL中金额小写转大写[技巧]

引用EXCEL中金额小写转大写[技巧]

引用EXCEL中金额小写转大写到现在为止EXCEL中自带的金额小写转大写功能都不能如我们中国人的习惯,曾有朋友问过我如何做到人性化点,还真惭愧,我的EXCEL办公方面的软件使用很差,我相信会有公式可以完成,于是上面到处找,但当时都没有找到,只好作罢!今天又再有朋友问起,我决定要找到一个为止.没有想到竟真的被我找了,以下就是我本人从网络上收集到的,因为不知作者为何人,在此只能为这些默默奉献的朋友说声谢谢!在网上找到有二篇,功能相对完善的是第二篇.现在一一转贴过来!=======================第一篇========================要将人民币小写金额转换成大写格式,用Excel提供的格式,将自定义格式类型中的“[dbnum2]G/通用格式”改为“[dbnum2] G/通用格式“元””来实现。

但在转换小数时却出现了问题,比如¥6,050.09只能转换为“陆仟零伍拾.零玖圆”。

那么用Excel能不能解决这一先天不足呢?其方法有以下两种(以下均对B1转换,假设B1是通过函数ROUND( )四舍五入取得二位小数的小写金额数,其值为¥6,050.09)。

一、在三个连续的同行单元格中转换1. B2中输入公式“=IF(B1〈0,"金额为负无效",INT(B1))”,计算结果为¥6,050.00,然后点击“格式→单元格→数字→特殊→中文大写数字→确定”,B2显示“陆仟零伍拾”,再点击“格式→单元格→数字→自定义”,将“类型”编辑框中的“[dbnum2]G/通用格式”修改为:[dbnum2](“人民币”)G/通用格式“元”,此时B2显示:“(人民币)陆仟零伍拾元”。

2. C2中输入“=IF(B1〈0,"",INT(B1 10)-INT(B1) 10)”,同样C2改为:[DBNum2]G/通用格式“角”,C2显示:“零角”。

3. D2中输入“=IF(B1〈0,"",INT(B1 100)-INT(B1 10) 10)”,同样D2改为:[DBNum2]G/通用格式“分”,D2显示:“玖分”。

人民币金额大小写转换工具在线

人民币金额大小写转换工具在线

人民币金额大小写转换工具在线人民币小写在线转换成大写人民币大写规则的写法和繁体字转换有点不一样,比如10000应该写作“壹万”而非“壹萬”。

人民币大写在线转换工具,可以将人民币小写金额转换为大写金额,轻巧绿色且使用简便,使您免去了一个个输入大写文字的烦恼。

如果你有外贸财务方面的问题,可以前往>>福步外贸财务专区转换方法:只要在下面的小写金额框中填入人民币金额的小写阿拉伯数字,例如1688.99,然后点击“转换为大写金额”按钮即可得转换成汉字。

在输入数字的时候,可以包含小数点,也可以写成千进制,例如1,688.99(注意是英文逗号,而不是中文逗号)。

人民币金额用到的中文大写汉字如下:零、壹、贰、叁、肆、伍、陆、柒、捌、玖、拾、佰、仟、万、亿。

人民币常识人民币(缩写为RMB)是我国大陆地区的法定货币,尽管每个人几乎天天都要接触到人民币或者支票,但是人民币大写如何写是困扰很多人的问题。

尽管生活中看起来极其熟悉而又简单的东西,但发现其实并不会写。

人民币在ISO 4217简称为CNY(China Yuan),常用简写为RMB(Ren Min Bi);人民币货币的符号是“ ¥”('Y'+'='),读音为“YUAN”。

人民币按照材料的自然属性划分,有金属币(亦称硬币)、纸币(亦称钞票)。

无论纸币、硬币均等价流通,至今已发行了五套人民币。

人民币大写规范详细介绍银行、单位和个人填写的各种票据和结算凭证是办理支付结算和现金收付的重要依据,直接关系到支付结算的准确、及时和安全。

票据和结算凭证是银行、单位和个人凭以记载账务的会计凭证,是记载经济业务和明确经济责任的一种书面证明。

因此,填写票据和结算凭证必须做到标准化、规范化、要素齐全、数字正确、字迹清晰、不错漏、不潦草、防止涂改。

中文大写金额数字应用正楷或行书填写,如壹、贰、叁、肆、伍、陆、柒、捌、玖、拾、佰、仟、万、亿、元、角、分、零、整(正)等字样,不得用一、二(两)、三、四、五、六、七、八、九、十、毛、另(或0)填写,不得自造简化字。

4【会计工作技能链接】小写大写金额的书写方法

4【会计工作技能链接】小写大写金额的书写方法
阿拉伯金额数字角位是“0”而分位不是“0”时,中文大写 金额“元”后面应写“零”字,如¥16409.02应写成人 民币壹万陆仟肆佰零玖元零贰分,又如¥325.04应写成人 民币叁佰贰拾伍元零肆分。
3、 小写金额转换大写金额样例
3、 小写金额转换大写金额样例
3、 小写金额转换大写金额样例
3、 小写金额转换大写金额样例
1、 小写金额的书写要求与读法
(1) 在写数时,每一个数字都要占一个位置,这个位 置称为数位。数位自小到大,是从右向左排列的,但在 写数去是自大到小,从左到右的。
为了容易辨认数的各个位数,在写数时,通常在按三位记一逗号“,”作为分节号。
例如,1,234,567,890把各个分位点的前一位记 住邻近的数位就很容易推想出来了。
从右向左,第一分位点前一位是千位,第二个分位点前 一位是百万位,第三个分位点前一位是十亿位。
1、 小写金额的书写要求与读法
(2) 万位以下的数,从最高位读起,顺着位次每读一个数字 就接着读出这个数字所对应的数位名称。
4、小写大写金额实例
3、 小写金额转换大写金额样例
3、 小写金额转换大写金额样例
3、 小写金额转换大写金额样例
3、 小写金额转换大写金额样例
3、 小写金额转换大写金额样例
阿拉伯数字中间有“0”时,中文大写要写“零”字,如
¥1409.50应写成人民币壹仟肆佰零玖元伍角整;小写人民币 500.01元,大写人民币伍佰元零壹分。
阿拉伯数字中间连续有几个“0”时、中文大写金额中间可以只 写一个“零”字,如¥6007.14应写成人民币陆仟零柒元壹角 肆分。
2、 大写金额在书写规则
(1) 大写金额的前面,必须加填“人民币”三字, 后面紧接着写金额,“人民币”三字与金额数字之 间不得留有空隙。大写金额数字前未印“人民币” 字样的,应加填“人民币”三字,在票据和结算凭 证大写金额栏内不得预印固定的“仟、佰、拾、万、 仟、佰、拾、元、角、分”字样。

会计金额的正确写法

会计金额的正确写法

会计金额正确写法如下:
1. 阿拉伯数字表示法:阿拉伯数字表示法是最常用的一种表示会计金额的方法,它使用阿拉伯数字从右往左依次表示个位、十位、百位、千位、万位、十万位、百万位、千万位、亿位等,如:5000元、30000元、100000元等。

2. 汉字大写表示法:汉字大写表示法是另一种常用的表示会计金额的方法,它使用汉字大写从右往左依次表示个位、十位、百位、千位、万位、十万位、百万位、千万位、亿位等,如:伍仟元整、叁万元整、壹拾万元整等。

3. 大小写混合表示法:大小写混合表示法是指在表示会计金额时,同时使用阿拉伯数字和汉字大写,如:人民币伍仟元整、美元叁仟元整等。

4. 特定数字表示法:特定数字表示法是指在表示会计金额时,使用特定的数字符号代替阿拉伯数字,如:¥5000元、$30000元等。

需要注意的是,在会计核算中,金额的书写必须准确、清晰、工整,不得随意涂改、刮擦或删除。

同时,会计金额的表示方式应根据会计制度的规定和实际需要选择,不得随意更改。

2019年excel小写数值如何转换为大写

2019年excel小写数值如何转换为大写

2019年excel小写数值如何转换为大写篇一:Excel表中小写金额直接转换成大写金额的公式Excel表中小写金额直接转换成大写金额的公式:一、=IF(OR(A1二、假定你要在B1输入阿拉佰数字,C1转换成中文大写金额(含元角分),请在C1单元格输入如下公式:=SUBSTITUTE(SUBSTITUTE(IF(-RMB(B1),IF(B1>0,,"")&TEXT(INT(AB S(B1)+0.5%),"[dbnum2]G/通用格负式元;;")&TEXT(RIGHT(RMB(B1,2),2),"[dbnum2]0角0分;;整"),),"零角",IF(B1^2<1,,"零")),"零分","整")三、用公式就可以,我不懂做会计的如何用大写表示如128.40这样的角不为0但分为0的值,是“壹佰贰拾捌元肆角整”还是“壹佰贰拾捌元肆角”?如果是“壹佰贰拾捌元肆角”,请用这个公式:=TEXT(INT(B2),"[DBNUM2]")&"元"&IF(INT(B2)=B2,"整",(IF(INT(B2*10)-INT(B2)*10>0,TEXT(INT(B2*10)-INT(B2)*10,"[ DBNUM2]")&"角","零")&IF(B2*100-INT(B2*10)*10>0,TEXT(B2*100-INT(B2*10)*10,"[db num2]")&"分","")))如果是“壹佰贰拾捌元肆角整”,请用这个公式:=TEXT(INT(B2),"[DBNUM2]")&"元"&(IF(INT(B2*10)-INT(B2)*10>0,TEXT(INT(B2*10)-INT(B2)*10,"[ DBNUM2]")&"角",IF(B2*100-INT(B2*10)*10>0,"零",""))&IF(B2*100-INT(B2*10)*10>0,TEXT(B2*100-INT(B2*10)*10, "[dbnum2]")&"分","整"))说明:1、将以上公式中的B2换成你要换算的值或对应的单元格。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档