将数字转换成中文大写的算法
//名称:ConvertSignCap
//参数:number
//返回:CapNumber
//描述:将传入的单个数字转换成中文大写形式
//创建人:刘权 2004-11-16
public static string ConvertSignCap(int SignNumber)
{
string CapNumber="";
switch(SignNumber)
{
case 0:
CapNumber = "零";
break;
case 1:
CapNumber = "壹";
break;
case 2:
CapNumber = "贰";
break;
case 3:
CapNumber = "叁";
break;
case 4:
CapNumber = "肆";
break;
case 5:
CapNumber = "伍";
break;
case 6:
CapNumber = "陆";
break;
case 7:
CapNumber = "柒";
break;
case 8:
CapNumber = "捌";
break;
case 9:
CapNumber = "玖";
break;
}
return CapNumber;
}
//名称:Symbol
//参数:NumLen,i
//返回:SymbolStr
//描述:根据传入的数值长度以及循环位数,返回其标识位
//创建人:刘权 2004-11-16
public static string Symbol(int NumLen,int i)
{
string SymbolStr = "";
switch(NumLen)
{
case 1:
SymbolStr="";
break;
case 2:
switch(i)
{
case 0:
SymbolStr="拾";
break;
case 1:
SymbolStr="";
break;
}
break;
case 3:
switch(i)
{
case 0:
SymbolStr="佰";
break;
case 1:
SymbolStr="拾";
break;
case 2:
SymbolStr="";
break;
}
break;
case 4:
switch(i)
{
case 0:
SymbolStr="仟";
break;
case 1:
SymbolStr="佰";
break;
case 2:
SymbolStr="拾";
break;
case 3:
SymbolStr="";
break;
}
break;
}
return SymbolStr;
}
//名称:ConvertToCap
//参数:number
//返回:CapNumber
//描述:将传入的金额转换(小数点后面保留2位小数)成中文大写形式
//创建人:刘权 2004-11-16
public static string ConvertToCap(double Number)
{
string NumberStr = Number.ToString();
if(NumberStr.IndexOf(".") <= 0)
{
NumberStr = NumberStr + ".00";
}
string CapStr = "";
string PartStr1 = "";
string PartStr2 = "";
string[] NumArr = NumberStr.Split('.');
//整数部分
string FNumber = NumArr[0].ToString();
//小数部分
string SNumber = NumArr[1].ToString();
if(FNumber.Length > 12)
{
//不计算大于1兆的金额。
CapStr = "数值太大,不能计算...";
}
else
{
//-------1:转换整数部分。
int FNumberLen = FNumber.Length;
//万位之内
if(FNumberLen < 5)
{
string IStr1 = "";
for(int i = 0;i < FNumberLen;i++)
{
IStr1 = ConvertSignCap(int.Parse(FNumber.Substring(i,1))) + Symbol(FNumberLen,i);
PartStr1 = PartStr1==""?IStr1:PartStr1 + IStr1;
}
}
//亿位之内
if(FNumberLen > 4 && FNumberLen < 9)
{
string TempStr1 = "";
string TempStr2 = "";
string IStr1 = "";
string IStr2 = "";
//将值分割成两部分:未超出万位的;超过万位
string Part1 = FNumber.Substring(FNumberLen-4,4);
string Part2 = FNumber.Substring(0,FNumberLen-4);
for(int i = 0;i < Part1.Length;i++)
{
IStr1 = ConvertSignCap(int.Parse(Part1.Substring(i,1))) + Symbol(Part1.Length,i);
TempStr1 = TempStr1==""?IStr1:(TempStr1 + IStr1);
}
for(int i = 0;i < Part2.Length;i++)
{
IStr2 = ConvertSignCap(int.Parse(Part2.Substring(i,1))) + Symbol(Part2.Length,i);
TempStr2 = TempStr2==""?IStr2:(TempStr2 + IStr2);
}
PartStr1 = TempStr2 + "万" + TempStr1;
}
//兆位之内
if(FNumberLen > 8 && FNumberLen < 13)
{
string TempStr1 = "";
string TempStr2 = "";
string TempStr3 = "";
string IStr1 = "";
string IStr2 = "";
string IStr3 = "";
//将值分割成三部分:未超出万位的;超过万位;超出亿位的
string Part1 = FNumber.Substring(FNumberLen-4,4);
string Part2 = FNumber.Substring(FNumberLen-8,4);
string Part3 = FNumber.Substring(0,FNumberLen-8);
for(int i = 0;i < Part1.Length;i++)
{
IStr1 = ConvertSignCap(int.Parse(Part1.Substring(i,1))) + Symbol(Part1.Length,i);
TempStr1 = TempStr1==""?IStr1:(TempStr1 + IStr1);
}
for(int i = 0;i < Part2.Length;i++)
{
IStr2 = ConvertSignCap(int.Parse(Part2.Substring(i,1))) + Symbol(Part2.Length,i);
TempStr2 = TempStr2==""?IStr2:(TempStr2 + IStr2);
}
for(int i = 0;i < Part3.Length;i++)
{
IStr3 = ConvertSignCap(int.Parse(Part3.Substring(i,1))) + Symbol(Part3.Length,i);
TempStr3 = TempStr3==""?IStr3:(TempStr3 + IStr3);
}
PartStr1 = TempStr3 + "亿" + TempStr2 + "万" + TempStr1;
}
//-------2:转换小数部分
int SNumberLen = SNumber.Length;
string IStr = "";
for(int j = 0;j < SNumberLen;j++)
{
string SymbolStr = j==0?"角":"分";
IStr = ConvertSignCap(int.Parse(SNumber.Substring(j,1))) + SymbolStr;
PartStr2 = PartStr2==""?IStr:(PartStr2 + IStr);
}
//将整数部分和小数部分结合
CapStr = PartStr1 + "元" + PartStr2;
}
// CapStr = CapStr.Replace("拾零","拾");
// CapStr = CapStr.Replace("零拾","零");
// CapStr = CapStr.Replace("零佰","零");
// CapStr = CapStr.Replace("零仟","零");
// CapStr = CapStr.Replace("零零","零");
// CapStr = CapStr.Replace("零零零","零");
// CapStr = CapStr.Replace("零零零零","零");
// CapStr = CapStr.Replace("零零","零");
return CapStr;
}
直接调用ConvertToCap方法即可
将数字转换成中文大写的算法相关推荐
- 货币数字转换成中文大写的函数
这个函数与以前其他网友提供的结构大不相同, 是一个从高位到低位的算法, 更加符合语言习惯. //---------------------------------------------------- ...
- js将数字转换成中文大写
//完成将 toChineseNum, 可以将数字转换成中文大写的表示,处理到万级别,例如 toChineseNum(12345),返回 一万二千三百四十五.const toChinesNum = ( ...
- C语言-如何将用户输入的金额数字转换成中文大写?
实战: 如何将用户输入的金额数字转换成中文大写? #include <stdio.h>int main() {// 输入金额转换成大写int money; // 输入数字int money ...
- JavaScript:将输入的一串数字转换成中文大写,最高可写12位(千亿)
将输入的一串数字转换成中文大写,最高可写12位(千亿) 例:输入:10000,输出:壹万 输入:10010,输出:壹万零壹拾 源码: function toChineseBig(num) {// 将接 ...
- python数字转换成中文大写
python数字转换成中文大写 代码 #-*- coding:utf-8 -*- count_map = {1:1, 2:10, 3:100, 4:1000, 5:10000} #用来统计传入数值的级 ...
- python 把数字转换成中文大写
def conversionString(intnumber):'''把数字转换成中文大写,例如:1->一 ,25->二十五,49->四十九Parameters----------i ...
- python数字转换成中文大写_python初学者笔记(2):阿拉伯数字转换成中文大写
题:输入一个数字,转换成中文大写的写法 可运行的程序(Python 2.7.9): 1 #-*- coding: utf-8 -*- #在python2的py文件里面写中文,必须要添加一行声明文件编码 ...
- Java实现将数字转换成中文大写
/** *程序功能:支持将仟亿数字转换成中文数字表示,如(110.12 转换成壹佰壹拾元壹角贰分) *算法思路:将数字,分成整数部分和小数部分(小数部分四舍五入到两位),分别进行转换,然后将转换后的结 ...
- 万以内的数字转换成中文大写的方法
闲话:一个朋友是做财务的,有一天问我98745的中文大写是什么,我也不知道,但是目前好多手机的计算器是可以直接转换的,所以自己无聊也想写一段代码试试于是就有了今天的水文,但是我个人觉得不算是太水,还是 ...
最新文章
- aix oracle 10.2.0.1 升级 10.2.0.4,安装oracle 10.2.0.4 on aix 6.1的不同之处
- 非线性振动 matlab,用MATLAB分析非线性弹簧振子的振动
- ​【安全牛学习笔记】操作系统识别
- 查看Linux的磁盘使用情况
- 【学术相关】你在读博士期间明白的最深刻的道理是什么?
- 不同php文件,php-不同文件夹的不同登录(会话)
- mysql 多表 update sql语句总结
- 简化业务代码开发:看Lambda表达式如何将代码封装为数据
- webpack 打包第三方库_Webpack 打包第三方代码库
- 前端代码的整洁之道 | 技术头条
- 相关滤波之开篇Mosse原理及代码详解
- 最短路—Johnson算法(解决负权边,判断负权环)
- Win7环境下VS2015安装+CUDA 10.0安装配置教程以及安装环境时遇到的一些问题
- Win11如何查看硬盘型号?
- Flask蓝本创建名称错误导致的werkzeug.routing.BuildError
- java写俄罗斯方块难吗_用JAVA写的俄罗斯方块
- SSR门户项目爬坑之路(一)
- ETL对文件数据进行处理,进入到数据仓库
- Android合并音频文件
- 二分查找法的基本思想与实现代码
热门文章
- linux怎么装软件
- 管家婆软件登录提示:用户‘sa‘登录失败,原因:未与信任的SQL server相关联。
- office多级列表编号设置
- 移动通信平台的搭建(可语音可视屏可收发短信)
- html注释的爱情故事,才女李清照的爱情故事:才下眉头,却上心头
- 爱掼蛋电脑版 v6.4.2
- 这是修养还是管理艺术
- 笔记本实体机安装FreeBSD操作系统(KDE-Plasma5桌面环境+NVIDIA显卡驱动)
- [Java笔记13] 日期与时间
- 信息技术计算机老师继续教育培训心得,信息技术课教师继续教育心得体会