会计金额小写转大写
- 格式:xls
- 大小:28.50 KB
- 文档页数:1
前言银行、单位和个人填写的各种票据和结算凭证是办理支付结算和现金收付的重要依据,直接关系到支付结算的准确、及时和安全。
票据和结算凭证是银行、单位和个人凭以记载帐务的会计凭证,是记载经济业务和明确经济责任的一种书面证明。
因此,填写票据和结算凭证,必须做到标准化、规范化,要要素齐全、数字正确、字迹清晰、不错漏、不潦草,防止涂改。
我的服务需要一个金额转换过程,本来想在网上找,但都是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提供的格式,将自定义格式类型中的“[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)填写,不得自造简化字。
会计金额正确写法如下:
1. 阿拉伯数字表示法:阿拉伯数字表示法是最常用的一种表示会计金额的方法,它使用阿拉伯数字从右往左依次表示个位、十位、百位、千位、万位、十万位、百万位、千万位、亿位等,如:5000元、30000元、100000元等。
2. 汉字大写表示法:汉字大写表示法是另一种常用的表示会计金额的方法,它使用汉字大写从右往左依次表示个位、十位、百位、千位、万位、十万位、百万位、千万位、亿位等,如:伍仟元整、叁万元整、壹拾万元整等。
3. 大小写混合表示法:大小写混合表示法是指在表示会计金额时,同时使用阿拉伯数字和汉字大写,如:人民币伍仟元整、美元叁仟元整等。
4. 特定数字表示法:特定数字表示法是指在表示会计金额时,使用特定的数字符号代替阿拉伯数字,如:¥5000元、$30000元等。
需要注意的是,在会计核算中,金额的书写必须准确、清晰、工整,不得随意涂改、刮擦或删除。
同时,会计金额的表示方式应根据会计制度的规定和实际需要选择,不得随意更改。
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换成你要换算的值或对应的单元格。
大写一到十怎么写数字一到十的大写怎么写(开票用的大写)大写一到十怎么写数字一到十的大写怎么写(开票用的大写)数字大写转换_大写数字金额写法:零、壹、贰、叁、肆、伍、陆、柒、捌、玖、拾、佰、仟、万、亿、元、角、分、整。
一,阿拉伯数字与大、小写数字的对照表:数字小写数字大写数字0、O、零1、一、壹2、二、贰3、三、叁4、四、肆5、五、伍6、六、陆7、七、柒8、八、捌9、九、玖电脑输入方法:如果要在电脑上面打出大写数字一到十怎么打呢? 我们只需要使用拼音输入法即可打出。
当然不要用到最标准的ABC智能拼音啦。
一般用搜狗、QQ拼音都能打出大写的数字。
如下图!二、“¥”符号的来历“¥”是人民币的符号。
我国1948年12月1日开始发行妁人民币,是以“元”为单位,而“元”的汉语拼音为YuAN。
取元的拼音的第一个字母,再添加两横,组成“¥”,规定为人民币的符号。
正确票据的书写。
银行、单位和个人填写的各种票据和结算凭证是办理支付结算和现金收付的重要依据,直接关系到支付结算的准确、及时和安全。
票据和结算凭证是银行、单位和个人凭以记载账务的会计凭证,是记载经济业务和明确经济责任的一种书面证明。
因此,填写票据和结算凭证,必须做到标准化、规范化,要素齐全、数字正确、字迹清晰、不错漏、不潦草,防止涂改。
三,大写数字(票据的写法)12 3 4 5 6 7 8 9 0壹贰叁肆伍陆柒捌玖零拾百仟万元角分592531.6应写为:伍拾玖万贰仟伍百叁拾壹元陆角根据规定108000的写法为:1.壹拾万零捌仟元整2.壹拾万捌仟元整上边我给的这两种写法都正确详细说明可在下方规定中查找这段话:如¥107000.53,应写成人民币壹拾万柒仟元零伍角叁分,或者写成人民币壹拾万零柒仟元伍角叁分。
正确填写票据和结算凭证的基本规定银行、单位和个人填写的各种票据和结算凭证是办理支付结算和现金收付的重要依据,直接关系到支付结算的准确、及时和安全。
票据和结算凭证是银行、单位和个人凭以记载账务的会计凭证,是记载经济业务和明确经济责任的一种书面证明。
Excel表中小写金额直接转换成大写金额的公式:一、=IF(OR(A1<0,A1=""),"",IF(VALUE(LEFT(A1,1))=0,"",NUMBERSTRIN G(INT(A1),2)&"元")&IF(ISERROR(FIND(".",A1)),"整",IF(VALUE(MID(A1,FIND(".",A1)+1,1))=0,"零",IF(ISERROR(FIND(".",A1)),"",NUMBERSTRING(MID(A1,FIND(".", A1)+1,1),2)&"角")))&IF(ISERROR(FIND(".",A1)),"",IF(LEN(ROUND(A1,2))=(FIND( ".",A1)+2),NUMBERSTRING(MID(ROUND(A1,2),FIND(".",A1)+2,1),2 )&"分","")))&IF(ISERROR(FIND(".",A1)),"","")二、假定你要在B1输入阿拉佰数字,C1转换成中文大写金额(含元角分),请在C1单元格输入如下公式:=SUBSTITUTE(SUBSTITUTE(IF(-RMB(B1),IF(B1>0,,"负")&TEXT(INT(ABS(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换成你要换算的值或对应的单元格。
⾦额⼤⼩写转换刚开通博客也不知道写什么,看博客太空了,就把⼀个项⽬中⾦额⼤⼩写转换的类抽出来。
废话不说上图上代码。
先看个demo⽬前只能精确到分主要代码如下1using System;2using System.Collections.Generic;3using System.Linq;4using System.Web;56namespace⼤⼩写转换7 {8public class ConvertHelper9 {10///<summary>11///将⼩写数字转成⼤写⾦额12///</summary>13///<param name="str"></param>14///<returns></returns>15public string ConvertNum(string str)16 {17string rstr = "";18if (!IsPositveDecimal(str))19 {20 rstr = "负";21 str = str.Substring(1);22 }23//return "输⼊的不是正数字!";24if (Double.Parse(str) > 999999999999.99)25return"数字太⼤,⽆法换算,请输⼊⼀万亿元以下的⾦额";26char[] ch = new char[1];27 ch[0] = '.'; //⼩数点28string[] splitstr = null; //定义按⼩数点分割后的字符串数组29 splitstr = str.Split(ch[0]); //按⼩数点分割字符串30if (splitstr.Length == 1) //只有整数部分31return ConvertData(str) + "圆整";32else//有⼩数部分33 {3435 rstr += ConvertData(splitstr[0]) + "圆";//转换整数部分36 rstr += ConvertXiaoShu(splitstr[1]); //转换⼩数部分37return rstr;38 }39 }404142///43///判断是否是正数字字符串44///45///判断字符串46///如果是数字,返回true,否则返回false47public bool IsPositveDecimal(string str)48 {49 Decimal d;50try51 {52 d = Decimal.Parse(str);53 }54catch (Exception)55 {56return false;57 }58if (d >= 0)59return true;60else61return false;62 }636465///66///转换数字(整数)67///68///需要转换的整数数字字符串69///转换成中⽂⼤写后的字符串70public string ConvertData(string str)71 {72string tmpstr = "";73string rstr = "";74int strlen = str.Length;75if (strlen <= 4)//数字长度⼩于四位76 {77 rstr = ConvertDigit(str);7879 }80else81 {82if (strlen <= 8)//数字长度⼤于四位,⼩于⼋位83 {84 tmpstr = str.Substring(strlen - 4, 4); //先截取最后四位数字85 rstr = ConvertDigit(tmpstr);//转换最后四位数字86 tmpstr = str.Substring(0, strlen - 4);//截取其余数字87//将两次转换的数字加上万后相连接88 rstr = String.Concat(ConvertDigit(tmpstr) + "万", rstr);89 rstr = rstr.Replace("零零", "零");90 }91else92if (strlen <= 12)//数字长度⼤于⼋位,⼩于⼗⼆位93 {94 tmpstr = str.Substring(strlen - 4, 4); //先截取最后四位数字95 rstr = ConvertDigit(tmpstr);//转换最后四位数字96 tmpstr = str.Substring(strlen - 8, 4); //再截取四位数字97 rstr = String.Concat(ConvertDigit(tmpstr) + "万", rstr);98 tmpstr = str.Substring(0, strlen - 8);99 rstr = String.Concat(ConvertDigit(tmpstr) + "亿", rstr); 100 rstr = rstr.Replace("零亿", "亿");101 rstr = rstr.Replace("零万", "零");102 rstr = rstr.Replace("零零", "零");103 rstr = rstr.Replace("零零", "零");104 }105 }106 strlen = rstr.Length;107if (strlen >= 2)108 {109switch (rstr.Substring(strlen - 2, 2))110 {111case"佰零": rstr = rstr.Substring(0, strlen - 2) + "佰"; break; 112case"仟零": rstr = rstr.Substring(0, strlen - 2) + "仟"; break; 113case"万零": rstr = rstr.Substring(0, strlen - 2) + "万"; break; 114case"亿零": rstr = rstr.Substring(0, strlen - 2) + "亿"; break; 115 }116 }117return rstr;118 }119120121122///123///转换数字(⼩数部分)124///125///需要转换的⼩数部分数字字符串126///转换成中⽂⼤写后的字符串127public string ConvertXiaoShu(string str)128 {129int strlen = str.Length;130string rstr;131if (strlen == 1)132 {133 rstr = ConvertChinese(str) + "⾓";134return rstr;135 }136else137 {138string tmpstr = str.Substring(0, 1);139 rstr = ConvertChinese(tmpstr) + "⾓";140 tmpstr = str.Substring(1, 1);141 rstr += ConvertChinese(tmpstr) + "分";142 rstr = rstr.Replace("零分", "");143 rstr = rstr.Replace("零⾓", "");144return rstr;145 }146 }147148149///150///转换数字151///152///转换的字符串(四位以内)153///154public string ConvertDigit(string str)155 {156int strlen = str.Length;157string rstr = "";158switch (strlen)159 {160case1: rstr = ConvertChinese(str); break; 161case2: rstr = Convert2Digit(str); break; 162case3: rstr = Convert3Digit(str); break; 163case4: rstr = Convert4Digit(str); break; 164 }165 rstr = rstr.Replace("拾零", "拾");166 strlen = rstr.Length;167return rstr;168 }169170171///172///转换四位数字173///174public string Convert4Digit(string str)175 {176string str1 = str.Substring(0, 1);177string str2 = str.Substring(1, 1);178string str3 = str.Substring(2, 1);179string str4 = str.Substring(3, 1);180string rstring = "";181 rstring += ConvertChinese(str1) + "仟";182 rstring += ConvertChinese(str2) + "佰";183 rstring += ConvertChinese(str3) + "拾";184 rstring += ConvertChinese(str4);185 rstring = rstring.Replace("零仟", "零");186 rstring = rstring.Replace("零佰", "零");187 rstring = rstring.Replace("零拾", "零");188 rstring = rstring.Replace("零零", "零");189 rstring = rstring.Replace("零零", "零");190 rstring = rstring.Replace("零零", "零");191return rstring;192 }193194///195///转换三位数字196///197public string Convert3Digit(string str)198 {199string str1 = str.Substring(0, 1);200string str2 = str.Substring(1, 1);201string str3 = str.Substring(2, 1);202string rstring = "";203 rstring += ConvertChinese(str1) + "佰";204 rstring += ConvertChinese(str2) + "拾";205 rstring += ConvertChinese(str3);206 rstring = rstring.Replace("零佰", "零");207 rstring = rstring.Replace("零拾", "零");208 rstring = rstring.Replace("零零", "零");209 rstring = rstring.Replace("零零", "零");210return rstring;211 }212213214///215///转换⼆位数字216///217public string Convert2Digit(string str)218 {219string str1 = str.Substring(0, 1);220string str2 = str.Substring(1, 1);221string rstring = "";222 rstring += ConvertChinese(str1) + "拾";223 rstring += ConvertChinese(str2);224 rstring = rstring.Replace("零拾", "零");225 rstring = rstring.Replace("零零", "零");226return rstring;227 }228229230///231///将⼀位数字转换成中⽂⼤写数字232///233public string ConvertChinese(string str)234 {235//"零壹贰叁肆伍陆柒捌玖拾佰仟万亿圆整⾓分" 236string cstr = "";237switch (str)238 {239case"0": cstr = "零"; break;240case"1": cstr = "壹"; break;241case"2": cstr = "贰"; break;242case"3": cstr = "叁"; break;243case"4": cstr = "肆"; break;244case"5": cstr = "伍"; break;245case"6": cstr = "陆"; break;246case"7": cstr = "柒"; break;247case"8": cstr = "捌"; break;248case"9": cstr = "玖"; break;249 }250return (cstr);251 }252 }253254 }直接调⽤ConvertNum()⽅法传⼈⾦额即可。
人民币小写金额转大写金额(java版)代码说明:1.最大支持百万亿(15位整数,2位小数) ;或仟万亿(16位整数)2. 超过最大支持仟万亿(16位整数),只输出大写数字3. 整数部分越大,则小数部分输出越不精确4. 负数,则忽略负号代码:1.原代码import java.text.DecimalFormat;/**小写转大写* @author lily200825 2011-5-16* <li>最大支持<font color='red'>仟万亿</font>(16位整数,2位小数)</li>*/public class RMB {//输出日志public static volatile boolean isDebug = false;//阶值{仟万亿。
仟,佰,拾,元}public static final String[] unit = { "仟","佰","拾","万","仟","佰","拾","亿","仟","佰","拾","万","仟" ,"佰","拾","元" };// 数字表示public static final char[] digit = { '零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌','玖' };/*** 小写金额转大写金额* <li>最大支持<font color='red'>百万亿</font>(15位整数,2位小数) ;或<font color='red'>仟万亿</font>(16位整数)</li>* <li>超过最大支持<font color='red'>仟万亿</font>(16位整数),只输出大写数字</li> * <li>整数部分越大,则小数部分输出越不精确</li>* <li>负数,则忽略负号</li>* @param amount* @return 大写金额*/public static String number2UpperCase(double _amount){double amount = Math.abs(_amount);StringBuffer result = new StringBuffer();/** -------- 整数部分--------*/StringBuffer result_intStr = new StringBuffer();long num = (long)amount;// 转成大写String intStr = getUpperCase(num);int len = intStr.length();String regex_01 = "(零.)+";String regex_00 = "(零)+";String rep_str = "零";char zero = '零';if(len<=16){// ====== 仟万亿======int index = 0;for(int i=16-len ; i<16; i++){result_intStr.append(intStr.charAt(index++));//加权值result_intStr.append(unit[i]);}//加权后,未合并连续零String temp_intStr = result_intStr.toString();int temp_len = temp_intStr.length();if(isDebug){System.out.println("加权后未处理连续零,["+temp_intStr+"]。
小写金额转成大写金额所涉及到的函数
int将数值向下取整为最接近的整数
e.g.8.518
abs返回给定数值的绝对值,即不带符号的数值
e.g.-4.5 4.5
text根据指定的数值格式将数字转成文本,注意公式中的参数"[dbnum2]"
e.g.3138.35叁仟壹佰叁拾捌.叁伍元
int和text两个函数的组合使用
e.g.138.35壹佰叁拾捌元
int, abs和text函数的组合使用 - 只能体现到元
e.g.-123.56负壹佰贰拾叁元
壹佰贰拾叁
int, abs和text函数的组合使用 - 能体现出角
e.g.138.35壹佰叁拾捌元叁角
int, abs和text函数的组合使用 - 能体现出角和分
e.g.25贰拾伍元
int, abs和text函数的组合使用 - 能体现出角和分(当出现整数时)
e.g.87.09捌拾柒元玖分
int, abs和text函数的组合使用 - 能体现出角和分(当出现整数时)(当出现零角几分时)
e.g.87.09捌拾柒元零玖分
int, abs和text函数的组合使用 - 能体现出角和分(当出现整数时)(当出现零角几分时)- 最终完善版e.g.12.65大写金额:人民币壹拾贰元陆角伍分
几分时)- 最终完善版。
excel技巧保留两位小数小写转大写金额的方法本文讨论的是小写金额转大写,当小写的金额数字带小数的时候,通常就是两位小数,比如123.45元,本文只针对两位小数的小写转大写金额转换。
1、十万以内范围转换:将小写数字转换成大写中文:右击需要转换的单元格,在弹出的快捷菜单中选择设置单元格格式,本文讨论的是小写金额转大写,当小写的金额数字带小数的时候,通常就是两位小数,比如123.45元,本文只针对两位小数的小写转大写金额转换。
1、十万以内范围转换:将小写数字转换成大写中文:右击需要转换的单元格,在弹出的快捷菜单中选择“设置单元格格式”,然后在“数字”选项卡中选择“自定义”,在“类型”中输入入:[DBNum2]0"万"0"仟"0"佰"0"拾"0"元".0"角"0"分""整"百以内的大写格式: [DBNum2][$-804]"大""写"!:0"佰"0"拾"0"元".0"角"0"分""整"小写格式: ¥#,##0.00_),[红色](¥#,##0.00)2、十万以外范围转换:将小写数字转换成大写中文:右击需要转换的单元格,在弹出的快捷菜单中选择“设置单元格格式”,然后在“数字”选项卡中选择“自定义”,在“类型”中输入:[DBNum2]0"万"0"仟"0"佰"0"拾"0"万"0"仟"0"佰"0"拾"0"元".0"角"0"分""整"199条建筑设计知识1. 公共建筑通常以交通、使用、辅助三种空间组成2. 美国著名建筑师沙利文提出的名言‘形式由功能而来’3. 密斯.凡.德.罗设计的巴塞罗那博览会德国馆采用的是‘自由灵活的空间组合’开创了流动空间的新概念4. 美国纽约赖特设计的古根海姆美术馆的展厅空间布置采用形式是串联式5. 电影放映院不需采光6. 点式住宅可设天井或平面凹凸布置可增加外墙面,有利于每层户数较多时的采光和通风7. 对结构形式有规定性的有大小和容量、物理环境、形状的规定性8. 功能与流线分析是现代建筑设计最常用的手段9. 垂直方向高的建筑需要考虑透视变形的矫正10. 橙色是暖色,而紫色含有蓝色的成分,所以偏冷;青色比黄色冷、红色比黄色暖、蓝色比绿色冷11. 同样大小冷色调较暖色调给人的感觉要大12. 同样距离,暖色较冷色给人以靠近感13. 为保持室内空间稳定感,房间的低处宜采用低明度色彩14. 冷色调给人以幽雅宁静的气氛15. 色相、明度、彩度是色彩的三要素;三元色为红、黄、蓝16. 尺度的概念是建筑物整体或局部给人的视角印象大小和其实际大小的关系17. 美的比例,必然正确的体现材料的力学特征18. 不同文化形成独特的比例形式19. 西方古典建筑高度与开间的比例,愈高大愈狭长,愈低矮愈宽阔20. ‘稳定’所涉及的要素是上与下之间的相对轻重关系的处理21. 人眼观赏规律H 18°~45°局部、细部2H 18°~27°整体3H <18°整体及环境22. 黄金分隔比例为1:1.61823. 通风屋面只能隔离太阳辐射不能保温,适宜于南方24. 总图布置要因地制宜,建筑物与周围环境之间关系紧凑,节约因地;适当处理个体与群体,空间与体形,绿化和小品的关系;合理解决采光、通风、朝向、交通与人流的组织25. 热水系统舒适稳定适用于居住建筑和托幼蒸汽系统加热快,适用于间歇采暖建筑如会堂、剧场26. 渐变具有韵律感27. 要使一座建筑显得富有活力,形式生动,在构图中应采用对比的手法对比的手法有轴线对比、体量对比、方向对比、虚实对比、色彩对比28. 要使柱子看起来显得细一些,可以采用暗色和冷色29. 巴西国会大厅在体型组合中采用了对比与协调的手法30. 展览建筑应使用穿套式的空间组合形式31. 室外空间的构成,主要依赖于建筑和建筑群体组合32. 在意大利威尼斯的圣马可广场的布局中,采用了强调了各种空间之间的对比33. 当坡地坡度较缓时,应采用平行等高线布置34. 建筑的有效面积=建筑面积-结构面积35. 加大开窗面积的方法来解决采光和通风问题较易办到36. 中国古代木结构大致可分为抬梁式、穿斗式和井干式三种37. 建筑构图原理的基本范畴有主从与重点、对比与呼应、均衡与稳定、节奏与韵律和比例与尺度38. 建筑构图的基本规律是多样统一39. 超过8层的建筑中,电梯就成为主要的交通工具了40. 建筑的模数分为基本模数、扩大模数和分模数41. 建筑楼梯梯段的最大坡度不宜超过38°42. 住宅起居室、卧室、厨房应直接采光,窗地比为1/7,其他为1/1243. 住宅套内楼梯梯段的最小净宽两边墙的0.9M,一边临空的0.75M住宅室内楼梯踏步宽不应小于0.22M,踏步高度不应小大0.20M44. 住宅底层严禁布置火灾危险性甲乙类物质的商店,不应布置产生噪声的娱乐场所45. 地下室、贮藏室等房间的最低净高不应低于2.0米46. 室内坡道水平投影长度超过15米时,宜设休息平台47. 外墙内保温所占面积不计入使用面积烟道、风道、管道井不计入使用面积阳台面积不计入使用面积壁柜应计入使用面积48. 旋转楼梯两级的平面角度不大于10度,且每级离内侧扶手中心0.25处的踏步宽度要大于0.22米49. 两个安全出口之间的净距不应小于5米50. 楼梯正面门扇开足时宜保持0.6米平台净宽,侧墙门口距踏步不宜小于0.4米,其门扇开足时不应减少梯段的净宽35. 加大开窗面积的方法来解决采光和通风问题较易办到36. 中国古代木结构大致可分为抬梁式、穿斗式和井干式三种37. 建筑构图原理的基本范畴有主从与重点、对比与呼应、均衡与稳定、节奏与韵律和比例与尺度38. 建筑构图的基本规律是多样统一39. 超过8层的建筑中,电梯就成为主要的交通工具了40. 建筑的模数分为基本模数、扩大模数和分模数41. 建筑楼梯梯段的最大坡度不宜超过38°42. 住宅起居室、卧室、厨房应直接采光,窗地比为1/7,其他为1/1243. 住宅套内楼梯梯段的最小净宽两边墙的0.9M,一边临空的0.75M住宅室内楼梯踏步宽不应小于0.22M,踏步高度不应小大0.20M44. 住宅底层严禁布置火灾危险性甲乙类物质的商店,不应布置产生噪声的娱乐场所45. 地下室、贮藏室等房间的最低净高不应低于2.0米46. 室内坡道水平投影长度超过15米时,宜设休息平台47. 外墙内保温所占面积不计入使用面积烟道、风道、管道井不计入使用面积阳台面积不计入使用面积壁柜应计入使用面积48. 旋转楼梯两级的平面角度不大于10度,且每级离内侧扶手中心0.25处的踏步宽度要大于0.22米49. 两个安全出口之间的净距不应小于5米50. 楼梯正面门扇开足时宜保持0.6米平台净宽,侧墙门口距踏步不宜小于0.4米,其门扇开足时不应减少梯段的净宽35. 加大开窗面积的方法来解决采光和通风问题较易办到36. 中国古代木结构大致可分为抬梁式、穿斗式和井干式三种37. 建筑构图原理的基本范畴有主从与重点、对比与呼应、均衡与稳定、节奏与韵律和比例与尺度38. 建筑构图的基本规律是多样统一39. 超过8层的建筑中,电梯就成为主要的交通工具了40. 建筑的模数分为基本模数、扩大模数和分模数41. 建筑楼梯梯段的最大坡度不宜超过38°42. 住宅起居室、卧室、厨房应直接采光,窗地比为1/7,其他为1/1243. 住宅套内楼梯梯段的最小净宽两边墙的0.9M,一边临空的0.75M住宅室内楼梯踏步宽不应小于0.22M,踏步高度不应小大0.20M44. 住宅底层严禁布置火灾危险性甲乙类物质的商店,不应布置产生噪声的娱乐场所45. 地下室、贮藏室等房间的最低净高不应低于2.0米46. 室内坡道水平投影长度超过15米时,宜设休息平台47. 外墙内保温所占面积不计入使用面积烟道、风道、管道井不计入使用面积阳台面积不计入使用面积壁柜应计入使用面积48. 旋转楼梯两级的平面角度不大于10度,且每级离内侧扶手中心0.25处的踏步宽度要大于0.22米49. 两个安全出口之间的净距不应小于5米50. 楼梯正面门扇开足时宜保持0.6米平台净宽,侧墙门口距踏步不宜小于0.4米,其门扇开足时不应减少梯段的净宽51. 入地下车库的坡道端部宜设挡水反坡和横向通长雨水篦子52. 室内台阶宜150*300;室外台阶宽宜350左右,高宽比不宜大于1:2.553. 住宅公用楼梯踏步宽不应小于0.26M,踏步高度不应大于0.175M54. 梯段宽度不应小于1.1M(6层及以下一边设栏杆的可为1.0M),净空高度2.2M55. 休息平台宽度应大于梯段宽度,且不应小于1.2M,净空高度2.0M56. 梯扶手高度0.9M,水平段栏杆长度大于0.5M时应为1.05M57. 楼梯垂直杆件净空不应大于0.11M,梯井净空宽大于0.11M时应采取防护措施58. 门洞共用外门宽1.2M,户门卧室起居室0.9M,厨房0.8M,卫生间及阳台门0.7M,所有门洞高为2.0M59. 住宅层高不宜高于2.8M60. 卧室起居室净高≥2.4M,其局部净高≥2.1M(且其不应大于使用面积的1/3)61. 利用坡顶作起居室卧室的,一半面积净高不应低于2.1M利用坡顶空间时,净高低于1.2M处不计使用面积;1.2--2.1M计一半使用面积;高于2.1M全计使用面积62. 放家具墙面长3M,无直接采光的厅面积不应大于10M263. 厨房面积Ⅰ、Ⅱ≥4M2;Ⅲ、Ⅳ≥5M264. 厨房净宽单面设备不应小于1.5M;双面布置设备间净距不应小于0.9M65. 对于大套住宅,其使用面积必须满足45平方米66. 住宅套型共分四类使用面积分别为34、45、56、68M267. 单人卧室≥6M2;双人卧室≥10M2;兼起居室卧室≥12M2;68. 卫生间面积三件3M2;二件2--2.5M2;一件1.1M269. 厨房、卫生间净高2.2M70. 住宅楼梯窗台距楼地面净高度低于0.9米时,不论窗开启与否,均应有防护措施71. 阳台栏杆净高1.05M;中高层为1.1M(但要<1.2);杆件净距0.1172. 无外窗的卫生间应设置防回流构造的排气通风道、预留排气机械的位置、门下设进风百叶窗或与地面间留出一定缝隙73. 每套应设阳台或平台、应设置晾衣设施、顶层应设雨罩;阳台、雨罩均应作有组织排水;阳台宜做防水;雨罩应做防水74. 寒冷、夏热冬冷和夏热冬暖地区的住宅,西面应采取遮阳措施75. 严寒地区的住宅出入口,各种朝向均应设防寒门斗或保温门76. 住宅建筑中不宜设置的附属公共用房有锅炉房、变压器室、易燃易爆化学物品商店但有厨房的饮食店可设77. 住宅设计应考虑防触电、防盗、防坠落78. 跃层指套内空间跨跃两楼层及以上的住宅79. 在坡地上建住宅,当建筑物与等高线垂直时,采用跌落方式较为经济80. 住宅建筑工程评估指标体系表中有一级和二级指标81. 7层及以上(16米)住宅必须设电梯82. 宿舍最高居住层的楼地面距入口层地面的高度大于20米时,应设电梯83. 医院病房楼,设有空调的多层旅馆,超过5层的公建室内疏散楼梯,均应设置封闭楼梯间(包括首层扩大封闭楼梯间)设歌舞厅放映厅且超过3层的地上建筑,应设封闭楼梯间。
财务金额的自动化大小写转换在与报销单类似的财务单据填写过程中,货币金额的小写和大写转化是一个很重要的环节,在手工处理时,不但输入时很繁琐,而且还往往会出现不符合财务上描述货币数字的情况。
在本例中,我们事先自定义一个函数,然后再利用自定义的函数来实现自动转换,具体的操作步骤如下:(1)执行菜单栏中的【工具】|【宏】|【Visual Basic编辑器】命令,进入“Visual Basic编辑”窗口。
(2)在“Visual Basic编辑”窗口中,执行菜单栏中的【插入】|【模块】命令,插入一个模块(如图1所示)。
双击左侧的“模块1”,在窗口右边展开“模块1(代码)”编辑窗口,输入如下代码:图1 插入模块Function dx(q)ybb = Round(q * 100) '将输入的数值扩大100倍,进行四舍五入y = Int(ybb / 100) '截取出整数部分j = Int(ybb / 10) - y * 10 '截取出十分位f = ybb - y * 100 - j * 10 '截取出百分位zy = Application.WorksheetFunction.Text(y, "[dbnum2]") '将整数部分转为中文大写zj = Application.WorksheetFunction.Text(j, "[dbnum2]") '将十分位转为中文大写zf = Application.WorksheetFunction.Text(f, "[dbnum2]") '将百分位转为中文大写dx = zy & "元" & "整"d1 = zy & "元"If f <> 0 And j <> 0 Thendx = d1 & zj & "角" & zf & "分"If y = 0 Thendx = zj & "角" & zf & "分"End IfEnd IfIf f = 0 And j <> 0 Thendx = d1 & zj & "角" & "整"If y = 0 Thendx = zj & "角" & "整"End IfEnd IfIf f <> 0 And j = 0 Thendx = d1 & zj & zf & "分"If y = 0 Thendx = zf & "分"End IfEnd IfIf q = "" Thendx = 0 '如没有输入任何数值为0End IfEnd Function提示:代码中“dx”是自定义函数名称,读者可以修改为其他字符。