小写数字转换为中文大写的最完整C#方案
金额小写自动生成大写公式
金额小写自动生成大写公式金额小写转换成大写的公式主要依据中文的数字命名规则。
以下是一个可将金额小写转换成大写的公式:1.将金额小写以“元”为单位进行分组,每四位一组分组(从低位到高位),以方便命名。
2.对于每一组最高位的数字,根据其所在的组数命名单位(例如“元”、“万”、“亿”)。
其他位的数字分别根据其所在的位数加上相应的单位(例如“拾”、“佰”、“仟”、“拾万”、“佰万”、“仟万”、“拾亿”等)。
3.对于每一组中的数字,根据其大小进行命名。
命名规则如下:-0不进行命名,直接舍弃。
-1命名为“壹”或“一”(个别情况)。
-其他数字命名为“贰”、“叁”、“肆”、“伍”、“陆”、“柒”、“捌”、“玖”。
4.在每个数字后面添加相应的单位(例如“角”、“分”、“整”),其他位的单位根据需要进行命名,例如“拾角”、“佰角”、“仟分”等。
5.将每一组的命名和单位合并,组成完整的大写金额。
以下是一个具体的例子来说明公式的应用:假设要将金额小写1202.34转换成大写金额,根据公式:1.将金额小写以“元”为单位进行分组,得到两组数字:1202和342.对于最高位的数字1202,根据其所在的组数命名单位为“元”,其他位的数字分别命名为“壹仟”、“贰佰”、“零拾”、“贰”。
3.对于数字34,命名为“叁拾肆”。
4.在每个数字后面添加相应的单位:1202命名为“壹仟贰佰零拾贰元”,34命名为“叁拾肆分”。
5.将每一组的命名和单位合并,得到大写金额为“壹仟贰佰零拾贰元叁拾肆分”。
这就是将金额小写1202.34转换成大写的公式。
根据这个公式,可以将任何金额小写转换成大写。
大小写字母转换c语言程序
大小写字母转换c语言程序大小写字母转换是C语言中常见的操作之一。
在编写程序时,我们经常需要将字符串中的字母转换为大写或小写形式,以满足不同的需求。
C语言提供了一些内置函数来实现大小写字母的转换。
其中,toupper()函数可以将小写字母转换为大写字母,而tolower()函数则可以将大写字母转换为小写字母。
在使用这些函数之前,我们需要包含头文件<ctype.h>。
接下来,我们可以使用这些函数来转换字符串中的字母。
例如,假设我们有一个字符串str,其中包含一些字母。
如果我们想将所有的字母都转换为大写形式,我们可以使用如下代码:```c#include <stdio.h>#include <ctype.h>int main() {char str[] = "Hello World";int i; for (i = 0; str[i] != '\0'; i++) {str[i] = toupper(str[i]);} printf("%s", str); return 0;}```上述代码中,我们使用了一个for循环来遍历字符串中的每个字符。
然后,我们使用toupper()函数将每个字符转换为大写形式,并将其赋值回原字符串。
我们使用printf()函数打印出转换后的字符串。
同样地,如果我们想将字符串中的字母转换为小写形式,我们可以使用tolower()函数来实现。
在实际编程中,大小写字母转换常常用于字符串比较、字符串排序等操作中。
掌握这些转换函数的使用方法,可以帮助我们更方便地处理字符串相关的任务。
大小写字母转换是C语言中常见且有用的操作。
通过使用toupper()和tolower()函数,我们可以轻松地实现字母的大小写转换,从而满足不同的编程需求。
阿拉伯数字小写金额转换成中文大写金额c函数
近几年,在软件开发领域,很多项目中都需要处理阿拉伯数字小写金额转换成中文大写金额的需求。
为了满足这一需求,很多程序员开发了相应的c函数来实现这一功能。
在本文中,我将介绍一个高质量、流畅易读、结构合理的c函数,来实现阿拉伯数字小写金额转换成中文大写金额的功能。
1. 函数介绍我们知道,中文大写金额的写法和阿拉伯数字小写金额有着明显的区别。
在c语言中,我们可以通过编写相应的函数来实现这一转换。
以下是一个高质量、流畅易读的c函数示例:```c#include <stdio.h>#include <string.h>char *parseDigit(int digit, char *buffer){const char *chineseDigits[] = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"};const char *units[] = {"", "拾", "佰", "仟"};int qian = digit / 1000;int b本人 = (digit 1000) / 100;int shi = (digit 100) / 10;int ge = digit 10;strcpy(buffer, "");if (qian){strcat(buffer, chineseDigits[qian]); strcat(buffer, "仟");}if (b本人){strcat(buffer, chineseDigits[b本人]); strcat(buffer, "佰");}else if (qian){strcat(buffer, "零");}if (shi){if (shi != 1){strcat(buffer, chineseDigits[shi]); }strcat(buffer, "拾");}else if (b本人){strcat(buffer, "零");}else if (qian){strcat(buffer, "零");}if (ge){if (ge != 1){strcat(buffer, chineseDigits[ge]); }}else if (shi){strcat(buffer, "零");}else if (b本人 || qian){strcat(buffer, "零");}return buffer;}char *numberToChinese(int number, char *buffer) {char result[1024];strcpy(buffer, "");char temp[10];if (number == 0){strcpy(buffer, "零圆整");return buffer;}snprintf(temp, sizeof(temp), "d", number / xxx); strcat(buffer, parseDigit(number / xxx, result)); if (number / xxx){strcat(buffer, "亿");}number = xxx;if (number / xxx){strcat(buffer, parseDigit(number / xxx, result)); strcat(buffer, "万");}snprintf(temp, sizeof(temp), "d", number xxx); strcat(buffer, parseDigit(number xxx, result)); strcat(buffer, "圆");number = 100;snprintf(temp, sizeof(temp), "d", number / 10); if (number / 10){strcat(buffer, parseDigit(number / 10, result)); strcat(buffer, "角");}number = 10;snprintf(temp, sizeof(temp), "d", number);if (number){strcat(buffer, parseDigit(number, result));strcat(buffer, "分");}else{strcat(buffer, "整");}return buffer;int m本人n(){char result[1024];printf("s\n", numberToChinese(xxx, result));return 0;}```2. 函数使用示例在上面的c函数中,我们首先定义了一个parseDigit函数,用来处理每个数字的中文大写形式,然后定义了numberToChinese函数来具体实现阿拉伯数字小写金额转换成中文大写金额的功能。
EXCE如何把数字转化成中文大写金额格式
EXCEL 如何把数字转化成中文大写金额格式在EXCEL表中把数字转化成中文大写金额格式是财务人员在日常工作中的一个难题,虽然在EXCEL中的单元格格式设置中有一个特殊格式中可以转换在中文大写数字,但不能给出元、角、分整的中文金额特定格式,许多财务人员为之一筹莫展,最后只能手工输入,降低了EXCEL的使用效率,但如果TRUNC工作表函数,这个问题将迎刃而解,如单元格A1=123459.72,须在某一格记录其中文大写金额,则在该格内输入函数:="大写人民币:"&IF(TRUNC(A1)=0,"",TEXT(TRUNC(A1),"[DBNum2]G/通用格式")&"元")&IF(TRUNC(A1*10)-TRUNC(A1*10,-1)=0,IF(TRUNC(A1*100)-TRUNC(A1*100,-1)<>0,"零",""),TEXT(TRUNC(A1*10)-TRUNC(A1*10,-1),"[DBNum2]G/通用格式")&"角")&IF(TRUNC(A1*100)-TRUNC(A1*100,-1)=0,"",TEXT(TRUNC(A1*100)-TRUNC(A1*100,-1), "[DBNum2]G/通用格式")&"分")&IF(TRUNC(A1*100)-TRUNC(A1*100,-1)=0,"整","")回车后将得到完整的大写中文金额格式,这个函数将广泛应用于支票大家知道,在Excel中,可以通过设置单元格格式,把单元格的阿拉伯数字直接以中文数字形式来显示,但该格式并不适用于显示票据大写金额。
小写数字转换大写金额
小写数字转换大写金额在生活和工作中,我们经常需要将小写数字转换为大写金额。
无论是填写支票、填报表格还是使用中文写信,正确地将小写数字转化为大写金额都是非常重要的。
在本文中,我们将探讨如何准确地将小写数字转换为大写金额,并提供一些实用的技巧和示例。
一、基本规则在将小写数字转换为大写金额时,需要遵循一些基本规则。
以下是一些基本规则的概述: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转换为大写金额:壹元整以上示例可以帮助我们了解如何正确地将小写数字转换为大写金额。
根据不同的需要,我们可以灵活运用这些基本规则和转换示例,确保准确地将小写数字转换为大写金额。
三、注意事项在将小写数字转换为大写金额时,还需要注意一些事项,以避免出现错误。
c语言将阿拉伯数字变为大写,使用C#实现阿拉伯数字到大写中文的转换
c语⾔将阿拉伯数字变为⼤写,使⽤C#实现阿拉伯数字到⼤写中⽂的转换先记下来,以备后⽤!////// ⾦额转为⼤写⾦额///public class MoneyConvertChinese{////// ⾦额转为⼤写⾦额/////////public string MoneyToChinese(string LowerMoney){string functionReturnValue = null;bool IsNegative = false; // 是否是负数if (LowerMoney.Trim().Substring(0, 1) == "-"){// 是负数则先转为正数LowerMoney = LowerMoney.Trim().Remove(0, 1);IsNegative = true;}string strLower = null;string strUpart = null;string strUpper = null;int iTemp = 0;// 保留两位⼩数 123.489→123.49 123.4→123.4LowerMoney = Math.Round(double.Parse(LowerMoney), 2).ToString();if (LowerMoney.IndexOf(".") > 0){if (LowerMoney.IndexOf(".") == LowerMoney.Length - 2)LowerMoney = LowerMoney + "0";}}else{LowerMoney = LowerMoney + ".00";}strLower = LowerMoney;iTemp = 1;strUpper = "";while (iTemp <= strLower.Length){switch (strLower.Substring(strLower.Length - iTemp, 1)) {case ".":strUpart = "圆";break;case "0":strUpart = "零";break;case "1":strUpart = "壹";break;case "2":strUpart = "贰";break;case "3":strUpart = "叁";break;case "4":strUpart = "肆";break;case "5":case "6":strUpart = "陆";break;case "7":strUpart = "柒";break;case "8":strUpart = "捌";break;case "9":strUpart = "玖";break;}switch (iTemp){case 1:strUpart = strUpart + "分"; break;case 2:strUpart = strUpart + "⾓"; break;case 3:strUpart = strUpart + ""; break;case 4:strUpart = strUpart + ""; break;case 5:strUpart = strUpart + "拾"; break;case 6:strUpart = strUpart + "佰";strUpart = strUpart + "仟"; break;case 8:strUpart = strUpart + "万"; break;case 9:strUpart = strUpart + "拾"; break;case 10:strUpart = strUpart + "佰"; break;case 11:strUpart = strUpart + "仟"; break;case 12:strUpart = strUpart + "亿"; break;case 13:strUpart = strUpart + "拾"; break;case 14:strUpart = strUpart + "佰"; break;case 15:strUpart = strUpart + "仟"; break;case 16:strUpart = strUpart + "万"; break;default:strUpart = strUpart + ""; break;strUpper = strUpart + strUpper;iTemp = iTemp + 1;}strUpper = strUpper.Replace("零拾", "零");strUpper = strUpper.Replace("零佰", "零");strUpper = strUpper.Replace("零仟", "零");strUpper = strUpper.Replace("零零零", "零");strUpper = strUpper.Replace("零零", "零");strUpper = strUpper.Replace("零⾓零分", "整");strUpper = strUpper.Replace("零分", "整");strUpper = strUpper.Replace("零⾓", "零");strUpper = strUpper.Replace("零亿零万零圆", "亿圆"); strUpper = strUpper.Replace("亿零万零圆", "亿圆"); strUpper = strUpper.Replace("零亿零万", "亿");strUpper = strUpper.Replace("零万零圆", "万圆"); strUpper = strUpper.Replace("零亿", "亿");strUpper = strUpper.Replace("零万", "万");strUpper = strUpper.Replace("零圆", "圆");strUpper = strUpper.Replace("零零", "零");// 对壹圆以下的⾦额的处理if (strUpper.Substring(0, 1) == "圆"){strUpper = strUpper.Substring(1, strUpper.Length - 1); }if (strUpper.Substring(0, 1) == "零"){strUpper = strUpper.Substring(1, strUpper.Length - 1); }if (strUpper.Substring(0, 1) == "⾓"){strUpper = strUpper.Substring(1, strUpper.Length - 1); }if (strUpper.Substring(0, 1) == "分")strUpper = strUpper.Substring(1, strUpper.Length - 1);}if (strUpper.Substring(0, 1) == "整"){strUpper = "零圆整";}functionReturnValue = strUpper;if (IsNegative == true){return "负" + functionReturnValue;}else{return functionReturnValue;}}}测试代码:static void Main(string[] args){Console.Write("请输⼊要转成⼤写的数字:");string str = Console.ReadLine();Console.WriteLine("⼤写:" + new MoneyConvertChinese().MoneyToChinese(str)); Console.ReadLine();}测试结果:下⾯是其它⽹友的补充:using System;namespace ConsoleApp{////// 本类实现阿拉伯数字到⼤写中⽂的转换/// 请调⽤NumToChn⽅法///public class NumFormat{public NumFormat(){//// TODO: 在此处添加构造函数逻辑//}// 转换数字private char ToNum(char x){string strChnNames="零⼀⼆三四五六七⼋九";string strNumNames="0123456789";return strChnNames[strNumNames.IndexOf(x)];}// 转换万以下整数private string ChangeInt(string x){string[] strArrayLevelNames=new string[4] {"","⼗","百","千"}; string ret = "";int i;for (i=x.Length-1;i>=0;i--)if (x[i] == '0')ret = ToNum(x[i]) + ret;elseret = ToNum(x[i]) + strArrayLevelNames[x.Length-1-i] + ret; while ((i=ret.IndexOf("零零"))!=-1)ret=ret.Remove(i, 1);if (ret[ret.Length-1]=='零' && ret.Length>1)ret=ret.Remove(ret.Length-1,1);if (ret.Length>=2 && ret.Substring(0,2)=="⼀⼗")return ret;}// 转换整数private string ToInt(string x){int len = x.Length;string ret,temp;if (len<=4)ret = ChangeInt(x);else if (len<=8){ret = ChangeInt(x.Substring(0,len-4)) + "万"; temp = ChangeInt(x.Substring(len-4,4));if (temp.IndexOf("千")==-1 && temp!="")ret += "零" + temp;elseret += temp;}else{ret=ChangeInt(x.Substring(0,len-8)) + "亿"; temp=ChangeInt(x.Substring(len-8,4));if (temp.IndexOf("千")==-1 && temp!="")ret += "零" + temp;elseret += temp;ret += "万";temp = ChangeInt(x.Substring(len-4,4));if (temp.IndexOf("千")==-1 && temp!="")ret += "零" + temp;elseret += temp;}if ((i=ret.IndexOf("零万"))!=-1)ret = ret.Remove(i+1,1);while ((i=ret.IndexOf("零零"))!=-1)ret = ret.Remove(i,1);if (ret[ret.Length-1]=='零' && ret.Length>1)ret = ret.Remove(ret.Length-1,1);return ret;}private string ToDecimal(string x){string ret="";for (int i=0;iret += ToNum(x[i]);return ret;}public string NumToChn(string x){if (x.Length==0)return "";string ret="";if (x[0]=='-'){ret="负";x=x.Remove(0,1);}if (x[0].ToString()==".")x="0"+x;if (x[x.Length-1].ToString()==".")x=x.Remove(x.Length-1,1);if (x.IndexOf(".")>-1)ret += ToInt(x.Substring(0,x.IndexOf(".")))+"点"+ToDecimal(x.Substring(x.IndexOf(".")+1)); elseret += ToInt(x);}}}测试⼯程using System;namespace ConsoleApp{class MainClass{static void Main(string[] args){/*System.Console.WriteLine("Hello, The World!"); System.Console.WriteLine("My Love!");ClassTest ct = new ClassTest();System.Console.WriteLine(ct.Get_Str());*//*// 重载运算符MyVector v1 = new MyVector(5, 12);MyVector v2 = new MyVector(4, 3);MyVector v3 = new MyVector();v3 = v1 + v2;System.Console.WriteLine("{0}测试⼀下", v3.Length); */// 转换成⼤写数字NumFormat nf = new NumFormat();string x;while (true){Console.Write("X=");x = Console.ReadLine();if (x == "") break;} } } }。
小写数字转换为中文大写的最完整C#方案
using System;using System.Text;namespace DigitToChnText{///本程序用于将小写数字转换为中文大写, 提供以下功能://2. 能识别并处理任何错误输入//3. 算法稳定, 速度较快, 中文大写比较符合语言习惯/// 本程序用于将小写数字变成大写中文数字class DigitToChnText{private readonly char[] chnText;private readonly char[] chnDigit;public DigitToChnText(){chnText = new char[]{'零', '一', '二', '三', '四', '五', '六', '七', '八', '九'};chnDigit = new char[]{'十', '百', '千', '万', '亿'};}public string Convert( string strDigit ){// 检查输入数字decimal dec;try{dec = decimal.Parse( strDigit );}catch( FormatException ){throw new Exception("输入数字的格式不正确。
");}catch( Exception e ){throw e;}if( dec <= -10000000000000000m || dec >= 10000000000000000m ) {throw new Exception( "输入数字太大或太小,超出范围。
数字自动转大写的公式
数字自动转大写的公式
将数字转换为大写的公式:
1. 将数字按照每四位一组,从右往左依次读出来,不足四位的,在左
边补零,例如:0012读成零零一二,123456读成一二三四五六。
2. 将每一组分别转化为汉字,按照万、亿、万亿的单位进行分组,例如:一百亿三千零五十万九千八百零六转换为“壹佰亿叁仟零伍拾万
玖仟捌百零陆”。
3. 如果数值中含有“零”的,需要注意以下规则:
1) 当零位于整个数字的大头或结尾时,只读不写。
2) 当零位于数字中间时,需要写出来。
3) 当一个数字中出现多个零时,只读一个零。
4) 当一个数字中含有多个零且跨越了万、亿等单位时,在万、亿
等单位后面加上一个“零”即可。
4. 最后将每个组合起来,并在最前面加上“负”字,如果是负数的话。
例如:-1234567890转换为“负一十二亿三千四百五十六万七千八百九十”。
大写一到十怎么写数字一到十的大写怎么写(开票用的大写).doc
大写一到十怎么写数字一到十的大写怎么写(开票用的大写)大写一到十怎么写数字一到十的大写怎么写(开票用的大写)数字大写转换_大写数字金额写法:零、壹、贰、叁、肆、伍、陆、柒、捌、玖、拾、佰、仟、万、亿、元、角、分、整。
一,阿拉伯数字与大、小写数字的对照表:数字小写数字大写数字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小写转大写金额的三种常见方法Excel人民币金额自动大写
excel小写转大写金额的三种常见方法Excel人民币金额自动大写之前有财务岗的伙伴问过小雅这个问题,在工作中经常要填写中文大写金额,如果一个个填写大写金额,既耗时费力,又事半功倍。
并且面对大量数据,效率低下且极易出错。
今天小雅休息,给大家整理出来一起学习。
第一,单元格格式转大写金额1、将A列的数字小写金额,复制到B列,单击右键,选择设置单元格。
2、在左侧的类别栏中,单击:特殊,就会在右侧出现类型,选择---中文大写数字即可。
总结:这种excel自动大写金额方法优势在于速度快,不过如果带转换的小写数字含有小数,则会出错。
该方法只适合整数的转换。
第二, Numberstring函数转大写金额在Excel中有一个隐藏函数:numberstring函数,专门用来将小写数字金额转为大写金额的函数。
其函数语法为:Numberstring(number,参数),有三种参数,分别为1、2、3,其对应的转为大写的格式分别为中文大写金额,会计大写金额,数学大写金额。
请参考下面小雅的截图:总结:excel人民币金额大写使用到了numberstring函数,仅能将整数部分转为大写,无法将小数部分也转为大写金额,小数部分将四舍五入到整数部分。
第三,公式转大写金额我们在B2中输入公式:=SUBSTITUTE(SUBSTITUTE(TEXT(INT(A2),"[DBNum2][$-804]G/通用格式元"&IF(INT(A2)=A2,"整",""))&TEXT(MID(A2,FIND(".",A2&".0")+1,1),"[DBNum2][$-804]G/通用格式角")&TEXT(MID(A2,FIND(".",A2&".0")+2,1),"[DBNum2][$-804]G/通用格式分"),"零角","零"),"零分","")按回车键,双击之后就能自动填充,迅速将小写的数字金额转为标准的会计的大写数字金额。
大小写金额转换公式
大小写金额转换公式
大小写金额转换公式是一种将数字金额转换为中文大写金额的方法。
通过这种转换,我们可以更直观地表达金额的大小,并且在书写财务文件或者进行口头交流时更加方便。
这个转换公式是非常简单的,只需要按照一定的规则将数字金额转换为中文大写金额即可。
下面是一个示例,以便更好地理解这个转换过程:
假设我们要将数字金额100.50转换为中文大写金额。
首先,我们需要将小数部分转换为中文大写表示。
小数部分50可以转换为“五角”,那么整个小数部分可以表示为“五角”。
接下来,我们需要将整数部分转换为中文大写表示。
整数部分100可以转换为“壹佰”。
最后,将整数部分和小数部分连接起来,就可以得到最终的中文大写金额表示,即“壹佰元五角”。
通过这个示例,我们可以看出转换的规则:将整数部分每四位一组进行转换,每组之间加上对应的单位(如“亿”、“万”、“元”等);将小数部分转换为对应的单位(如“角”、“分”等)并与整数部分连接起来。
除了上述示例之外,还有一些特殊情况需要注意。
例如,当整数部分为0时,需要特殊表示为“零元”而不是“壹佰元”;当小数部分为0时,可以省略小数部分的表示,只保留整数部分的表示。
在实际应用中,我们可以根据具体的需求和规范来进行金额转换。
可以编写相应的程序或者使用现成的转换工具来实现这个功能。
大小写金额转换公式是一种非常实用的工具,可以将数字金额转换为中文大写金额,方便我们更好地表达和理解金额的大小。
通过掌握转换规则和方法,我们可以在财务管理和日常交流中更加准确地使用金额表示。
excel金额小写转大写最简单的公式
excel金额小写转大写最简单的公式在日常工作和生活中,我们经常会用到Excel来进行各种数据操作。
而在Excel中,金额是一个非常重要的数据类型,尤其是在财务、会计等领域,金额的正确性至关重要。
对于金额的表达方法,我们通常使用数字(即小写金额)来表示,如1000元、90000元等。
但在有些特殊场合,我们需要使用中文表示方法(即大写金额),如壹仟元整、玖万元整等。
那么如何将Excel中的小写金额转换为大写金额呢?其实,这个问题非常简单,只需要使用一个公式即可。
下面是将Excel中的小写金额转化为大写金额的最简单公式:=TEXT(INDEX({"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"},MATCH(LEFT(A1,1),{"0","1","2","3","4","5","6","7","8","9"},0)+1),)&IF(MID(A1,2,1)="0","",TEXT(INDEX({"拾","佰","仟"},LEN(A1)-1-1+1-MATCH(MID(A1,2,1),{"0","1","2","3","4","5","6","7","8","9"},0 )),))&IF(MID(A1,3,1)="0",IF(RIGHT(A1,1)="0","","零"),TEXT(INDEX({"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"},MATCH(MID(A1,3,1),{"0","1","2","3","4","5","6","7","8","9" },0)+1),"零"))&IF(MID(A1,4,1)="0",IF(RIGHT(A1,2)="00","","零"),TEXT(INDEX({"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"},MATCH(MID(A1,4,1),{"0","1","2","3","4","5","6","7","8","9" },0)+1),))&IF(RIGHT(A1,3)="000","","零")&IF((LEN(A1)-LEN(SUBSTITUTE(A1,".","")))=1,"元",TEXT(INDEX({"拾","佰","仟","万"},(LEN(A1)-1)/4+1),"元"))&IF(RIGHT(A1,2)="00","整",IF(RIGHT(A1,1)="0",TEXT(INDEX({"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"},MATCH(RIGHT(A1,1),{"0","1","2","3","4","5","6","7","8","9" },0)+1))&"角",TEXT(INDEX({"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"},MATCH(MID(A1,LEN(A1)-1,1),{"0","1","2","3","4","5","6","7","8","9"},0)+1))&"角"))&IF(RIGHT(A1,2)="0","",TEXT(INDEX({"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"},MATCH(RIGHT(A1,2),{"01","02","03","04","05","06","07","08" ,"09","10","11","12"},0)),)&"分"))使用这个公式之前,需要将Excel的格式改为文本格式(在单元格中右击→设置单元格格式→选择“文本”,并勾选“使用千位分隔符”)。
大写数字转换
大写数字转换
大小写转换 - 数字大写表 - 数字小写转大写 (大写红色字可选中复制使用)
0 = 零 1 = 壹 2 = 贰 3 = 叁 4 = 肆
5 = 伍
6 = 陆
7 = 柒
8 = 捌
9 = 玖
数字大小写-使用说明:
1、汉字大写金额数字标准写法:壹、贰、叁、肆、伍、陆、柒、
捌、玖、拾、佰、仟、万、亿、元、角、分、零、整(正)等字样,不得用一、二(两)、三、四、五、六、七、八、九、十、廿、毛、另(或0)填写,不得简写汉字。
2、中文数字大写金额以「元」结尾的在最后应写「整」、「正」
结尾,在角、分结尾可以不写。
3、大写金额数字前应标明“人民币”字样,大写金额数字应紧
接“人民币”字样填写,不得留有空白。
4、阿拉伯数字小写金额数字中有“0”时,中文大写应按照汉语
语言规律、金额数字构成和防止涂改的要求进行书写。
5、例如:¥708000.63应写成人民币柒拾万捌仟元零陆角叁分,
或写成人民币柒拾万零捌仟元陆角叁分。
会计常用金额单位写法(位数)对应表
亿 = 亿万 = 万千 = 仟百 = 佰十 = 拾
元 = 圆角 = 角分 = 分正 = 正整 = 整大小写转换-使用说明:
汉字金额数字大写和小写分别为:“壹(1)、贰(2)、叁(3)、肆(4)、伍(5)、陆(6)、柒(7)、捌(8)、玖(9)、拾(10)、佰(100)、仟(1000)、万(10000)、亿(100000000);
大小写金额单位分别为:圆(元)、角、分、零、整(正)”。
小写金额转换为大写金额(c实现) (2)
前言银行、单位和个人填写的各种票据和结算凭证是办理支付结算和现金收付的重要依据,直接关系到支付结算的准确、及时和安全。
票据和结算凭证是银行、单位和个人凭以记载帐务的会计凭证,是记载经济业务和明确经济责任的一种书面证明。
因此,填写票据和结算凭证,必须做到标准化、规范化,要要素齐全、数字正确、字迹清晰、不错漏、不潦草,防止涂改。
我的服务需要一个金额转换过程,本来想在网上找,但都是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.173.strcat( pDest, UnitChar[ 0 ] );//没有小数部,打印"整"字符174. }175. else176. {177.//十分位178.if ( feeInfo.decimal[ 0 ] )179.{180.strcat( pDest, NumberChar[ feeInfo.decimal[ 0 ] ] );181.strcat( pDest, UnitChar[ 18 ] );182.}183.else if ( feeInfo.sizeInt != 1 || feeInfo.integer[ 0 ] ) 184.{185.strcat( pDest, NumberChar[ feeInfo.decimal[ 0 ] ] );186.}187.188.//百分位不为0时189.if ( feeInfo.decimal[ 1 ] )190.{191.strcat( pDest, NumberChar[ feeInfo.decimal[ 1 ] ] );192.strcat( pDest, UnitChar[ 19 ] );193.}194. }195. return dest;196.}复制代码代码中有些地方没有注释清楚,要是有不明白的可以E-Mail我z_jingwei@。
excel技巧保留两位小数小写转大写金额的方法
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层的地上建筑,应设封闭楼梯间。
Word中数字金额小写“变”大写有两招
Word中数字金额小写“变”大写有两招在日常的办公应用中,尤其是作为一名财务人员,经常需要输入大写金额的形式的数字,“肆仟叁佰五拾元零伍分”,如果用手工输入的话,显得比较麻烦,其实只要通过输入小写数字并通过如下两招就能达到快速输入的目的。
第一招:釜底抽薪——自动更正法如果需要重复的输入一个大写数字金额,可以采用自动更正的方法。
例如要重复输入“肆仟叁佰伍拾元零伍分”,可以先输入“肆仟叁佰伍拾元零伍分”并选中它,然后执行菜单“工具→自动更正选项”打开“自动更正”对话框(图1),在“替换”下的框内输入“4350.05”并单击“添加”按钮确定后退出,以后直接输入“4350.05”后回车即可快速得到“肆仟叁佰伍拾元零伍分”。
第二招:一劳永逸——编制自动宏如果有许多小写金额要变成大写的话,用上面的自动更正的方法需要定义很多自动更正项,显然也比较麻烦,其实只需要编辑一个宏就能做到“一劳永逸”了。
启动Word后按下A lt+F11组合键,在打开的工程窗口左侧双击“ThisDocument”进入代码编写窗口,在代码编辑窗口中输入如下代码:Option ExplicitSub 小写金额变大写()Dim Numeric As Currency, IntPart As Long, DecimalPart As Byte, MyField As Field, Lable As String Dim Jiao As Byte, Fen As Byte, Oddment As String, Odd As String, MyChinese As StringConst ZWDX As String = "壹贰叁肆伍陆柒捌玖零" '定义一个中文大写汉字常量On Error Resume Next '错误忽略With SelectionNumeric = VBA.Round(VBA.Val(.Text), 2) '四舍五入保留小数点后两位'判断是否在表格中If .Information(wdWithInTable) Then _.MoveRight unit:=wdCell Else .MoveRight unit:=wdCharacter'对数据进行判断,是否在指定的范围内If VBA.Abs(Numeric) > 2147483647 Then MsgBox "数值超过范围!", _vbOKOnly + vbExclamation, "Warning": Exit SubIntPart = Int(VBA.Abs(Numeric)) '定义一个正整数Odd = VBA.IIf(IntPart = 0, "", "元") '定义一个STRING变量'插入中文大写前的标签Lable = VBA.IIf(Numeric = VBA.Abs(Numeric), "人民币金额大写: ", "人民币金额大写: 负") '对小数点后面二位数进行择定DecimalPart = (VBA.Abs(Numeric) - IntPart) * 100Select Case DecimalPartCase Is = 0 '如果是0,即是选定的数据为整数Oddment = VBA.IIf(Odd = "", "", Odd & "整")Case Is < 10 '<10,即是零头是分Oddment = VBA.IIf(Odd <> "", "元零" & VBA.Mid(ZWDX, DecimalPart, 1) & "分", _VBA.Mid(ZWDX, DecimalPart, 1) & "分") Case 10, 20, 30, 40, 50, 60, 70, 80, 90 '如果是角整Oddment = "元" & VBA.Mid(ZWDX, DecimalPart / 10, 1) & "角整"Case Else '既有角,又有分的情况Jiao = VBA.Left(CStr(DecimalPart), 1) '取得角面值Fen = VBA.Right(CStr(DecimalPart), 1) '取得分面值Oddment = Odd & VBA.Mid(ZWDX, Jiao, 1) & "角" '转换为角的中文大写Oddment = Oddment & VBA.Mid(ZWDX, Fen, 1) & "分" '转换为分的中文大写End Select'指定区域插入中文大写格式的域Set MyField = .Fields.Add(Range:=.Range, Text:="= " & IntPart & " \*CHINESENUM2") MyField.Select '选定域(最后是用指定文本覆盖选定区域)'如果仅有角分情况下,Mychinese为""MyChinese = VBA.IIf(MyField.Result <> "零", MyField.Result, "").Text = Lable & MyChinese & OddmentEnd WithEnd Sub人民币金额大写:输入完毕后按下Alt+Q键返回word中,以后只需要依次选中需要转换的小写金额后,按下Alt+F8打开宏对话框,选择“小写金额变大写”宏(图2),并单击“运行”即可快速地得出大写金额。
C语言小写转大写,小写字母转换成大写字母
C语言小写转大写,小写字母转换成大写字母在 C 语言中区分字母的大小写,利用ASCII码中大写字母和小写字母之间的转换关系(差值为32),可以将小写字母转换为大写字母。
编写程序实现,从键盘上输入一个小写字母,按回车键,程序将该小写字母转换为大写字母,并输出其 ASCII 值。
算法思想由于大写字母与小写字母之间的差值为32,因此小写字母转换为大写字母的方法就是将小写字母的 ASCII 码值减去 32,便可得到与之对应的大写字母。
利用getchar 函数从键盘上输入一个小写字母,并将其赋给一个字符变量a;然后将a—32 的值赋给字符变量b;最后进行输出,输出时先输出字母,再将字母以整数形式输出。
其具体步骤如下:① 定义两个字符变量 a、b;② a=get char();③ b=a—32;④ 打印输出。
程序代码复制纯文本复制1.#include <stdio.h>2.int main()3.{4.char a,b;5.printf('输入一个小写字母:\n');6.a=getchar();7.b=a-32;8.printf('转换后的字母为:%c,%d\n',b,b);9.return 0;10.}#include <stdio.h>int main(){ char a,b; printf('输入一个小写字母:\n'); a=getchar(); b=a-32; printf('转换后的字母为:%c,%d\n',b,b); return 0;}调试运行结果输入小写字母c 时,转换后的大写字母及所对应的 ASCII 值如下所示:输入一个小写字母:c转换后的字母为:C,67输入小写字母 m 时,转换后的大写字母及所对应的 ASCII 值如下所示:输入一个小写字母:m转换后的字母为:M,77总结① 实例内容要求对 ASCII 码有所了解。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
using System;using System.Text;namespace DigitToChnText{///本程序用于将小写数字转换为中文大写, 提供以下功能://2. 能识别并处理任何错误输入//3. 算法稳定, 速度较快, 中文大写比较符合语言习惯/// 本程序用于将小写数字变成大写中文数字class DigitToChnText{private readonly char[] chnText;private readonly char[] chnDigit;public DigitToChnText(){chnText = new char[]{'零', '一', '二', '三', '四', '五', '六', '七', '八', '九'};chnDigit = new char[]{'十', '百', '千', '万', '亿'};}public string Convert( string strDigit ){// 检查输入数字decimal dec;try{dec = decimal.Parse( strDigit );}catch( FormatException ){throw new Exception("输入数字的格式不正确。
");}catch( Exception e ){throw e;}if( dec <= -10000000000000000m || dec >= 10000000000000000m ) {throw new Exception( "输入数字太大或太小,超出范围。
" );}StringBuilder strResult = new StringBuilder();// 提取符号部分// '+'在最前if( "+" == strDigit.Substring( 0, 1 ) ){strDigit = strDigit.Substring( 1 );}// '-'在最前else if( "-" == strDigit.Substring( 0, 1 ) ){strResult.Append( '负' );strDigit = strDigit.Substring( 1 );}// '+'在最后else if( "+" == strDigit.Substring( strDigit.Length - 1, 1 ) ){strDigit = strDigit.Substring( 0, strDigit.Length - 1 );}// '-'在最后else if( "-" == strDigit.Substring( strDigit.Length - 1, 1 ) ){strResult.Append( '负' );strDigit = strDigit.Substring( 0, strDigit.Length - 1 );}// 提取整数和小数部分int indexOfPoint;if( -1 == ( indexOfPoint = strDigit.IndexOf('.') ) ) // 如果没有小数部分{strResult.Append( ConvertIntegral( strDigit ) );}else // 有小数部分{// 先转换整数部分if( 0 == indexOfPoint ) // 如果“.”是第一个字符{strResult.Append( '零' );}else{strResult.Append( ConvertIntegral( strDigit.Substring( 0, indexOfPoint ) ) ); }// 再转换小数部分if( strDigit.Length - 1 != indexOfPoint ) // 如果“.”不是最后一个字符{strResult.Append( '点');strResult.Append( ConvertFractional( strDigit.Substring( indexOfPoint + 1 ) ) ); }}return strResult.ToString();}// 转换整数部分protected string ConvertIntegral(string strIntegral){// 去掉数字前面所有的'0'// 并把数字分割到字符数组中char[] integral = ( ( long.Parse( strIntegral ) ).ToString() ).ToCharArray();// 变成中文数字并添加中文数位StringBuilder strInt = new StringBuilder();int i;int digit;digit = integral.Length - 1;// 处理最高位到十位的所有数字for( i = 0; i < integral.Length - 1; i++ ){strInt.Append( chnText[ integral[i] - '0'] );if( 0 == digit % 4 ) // '万' 或'亿'{if( 4 == digit || 12 == digit ){strInt.Append( chnDigit[3] ); // '万'}else if( 8 == digit ){strInt.Append( chnDigit[4] ); // '亿'}}else // '十','百'或'千'{strInt.Append( chnDigit[digit % 4 - 1] );}digit--;}// 如果个位数不是'0'// 或者个位数为‘0’但只有一位数// 则添加相应的中文数字if( '0' != integral[ integral.Length - 1 ] || 1 == integral.Length ){strInt.Append( chnText[ integral[ i ] - '0' ] );}// 遍历整个字符串i = 0;while( i < strInt.Length){int j = i;bool bDoSomething = false;// 查找所有相连的“零X”结构while( j < strInt.Length - 1 && "零" == strInt.ToString().Substring( j, 1 ) ) {string strTemp = strInt.ToString().Substring( j + 1, 1 );// 如果是“零万”或者“零亿”则停止查找if( "万" == strTemp || "亿" == strTemp ){bDoSomething = true;break;}j += 2;}if( j != i) // 如果找到“零X”结构,则全部删除{strInt = strInt.Remove( i, j - i);// 除了在最尾处,或后面不是"零万"或"零亿"的情况下,// 其他处均补入一个“零”if( i <= strInt.Length - 1 && !bDoSomething ){strInt = strInt.Insert( i, '零' );i++;}if( bDoSomething ) // 如果找到"零万"或"零亿"结构{strInt = strInt.Remove( i, 1 ); // 去掉'零'i++;continue;}// 指针每次可移动2位i += 2;}// 遇到“亿万”变成“亿零”或"亿"int index = strInt.ToString().IndexOf( "亿万" );if( -1 != index ){if( strInt.Length - 2 != index && // 如果"亿万"不在最后( index + 2 < strInt.Length && "零" != strInt.ToString().Substring( index + 2, 1) ) ) // 并且其后没有"零"strInt = strInt.Replace( "亿万", "亿零", index, 2 );elsestrInt = strInt.Replace( "亿万", "亿", index, 2);}// 开头为“一十”改为“十”if( strInt.Length > 1 && "一十" == strInt.ToString().Substring( 0, 2 ) ){strInt = strInt.Remove( 0, 1 );}return strInt.ToString();}// 转换小数部分protected string ConvertFractional( string strFractional ){char[] fractional = strFractional.ToCharArray();StringBuilder strFrac = new StringBuilder();// 变成中文数字int i;for( i = 0; i < fractional.Length; i++ )strFrac.Append( chnText[ fractional[ i ] - '0' ] );}return strFrac.ToString();}////// The main entry point for the application.///[STAThread]static void Main(string[] args){DigitToChnText obj = new DigitToChnText();string str = " ";while( "" != str ){Console.Write( "请输入小写数字: " );if( "" == ( str = Console.ReadLine() ) )break;try{Console.WriteLine( "大写中文数字为: {0}\n", obj.Convert( str ) );}catch( Exception e ){Console.WriteLine( "错误: {0}\n", e.Message );continue;}}}}}本文来自CSDN博客,转载请标明出处:/waterboy/archive/2004/08/13/74060.asp方法二:例如:(new Money(200)).ToString() == "贰佰元"namespace Skyiv.Util{using System.Text;class Test{static void Main(){for (;;){System.Console.Write( "金额: ");string s = System.Console.ReadLine();decimal m;try { m = decimal.Parse(s); }catch { break; }System.Console.WriteLine( "大写: " + new Money(m));}}}// 该类重载的ToString() 方法返回的是大写金额字符串class Money{public string Yuan = "元"; // “元”,可以改为“圆”、“卢布”之类public string Jiao = "角"; // “角”,可以改为“拾”public string Fen = "分"; // “分”,可以改为“美分”之类static string Digit = "零壹贰叁肆伍陆柒捌玖"; // 大写数字bool isAllZero = true; // 片段内是否全零bool isPreZero = true; // 低一位数字是否是零bool Overflow = false; // 溢出标志long money100; // 金额*100,即以“分”为单位的金额long value; // money100的绝对值StringBuilder sb = new StringBuilder(); // 大写金额字符串,逆序// 只读属性: "零元"public string ZeroString{get { return Digit[0] + Yuan; }}// 构造函数public Money(decimal money){try { money100 = (long)(money * 100m); }catch { Overflow = true; }if (money100 == long.MinV alue) Overflow = true;}// 重载ToString() 方法,返回大写金额字符串public override string ToString(){if (Overflow) return "金额超出范围";if (money100 == 0) return ZeroString;string [] Unit = { Yuan, "万", "亿", "万", "亿亿" };value = System.Math.Abs(money100);ParseSection(true);for (int i = 0; i < Unit.Length && value > 0; i++){if (isPreZero && !isAllZero) sb.Append(Digit[0]);if (i == 4 && sb.ToString().EndsWith(Unit[2]))sb.Remove(sb.Length - Unit[2].Length, Unit[2].Length);sb.Append(Unit[i]);ParseSection(false);if ((i % 2) == 1 && isAllZero)sb.Remove(sb.Length - Unit[i].Length, Unit[i].Length);}if (money100 < 0) sb.Append( "负");return Reverse();}// 解析“片段”: “角分(2位)”或“万以内的一段(4位)”void ParseSection(bool isJiaoFen){string [] Unit = isJiaoFen ?new string [] { Fen, Jiao } :new string [] { " ", "拾", "佰", "仟" };isAllZero = true;for (int i = 0; i < Unit.Length && value > 0;i++){int d = (int)(value % 10);if (d != 0){if (isPreZero && !isAllZero) sb.Append(Digit[0]);sb.AppendFormat( "{0}{1} ", Unit[i], Digit[d]);isAllZero = false;}isPreZero = (d == 0);value /= 10;}}// 反转字符串string Reverse(){StringBuilder sbReversed = new StringBuilder();for (int i = sb.Length - 1; i > = 0; i--)sbReversed.Append(sb[i]);return sbReversed.ToString();}}}。