//名称: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方法即可

将数字转换成中文大写的算法相关推荐

  1. 货币数字转换成中文大写的函数

    这个函数与以前其他网友提供的结构大不相同, 是一个从高位到低位的算法, 更加符合语言习惯. //---------------------------------------------------- ...

  2. js将数字转换成中文大写

    //完成将 toChineseNum, 可以将数字转换成中文大写的表示,处理到万级别,例如 toChineseNum(12345),返回 一万二千三百四十五.const toChinesNum = ( ...

  3. C语言-如何将用户输入的金额数字转换成中文大写?

    实战: 如何将用户输入的金额数字转换成中文大写? #include <stdio.h>int main() {// 输入金额转换成大写int money; // 输入数字int money ...

  4. JavaScript:将输入的一串数字转换成中文大写,最高可写12位(千亿)

    将输入的一串数字转换成中文大写,最高可写12位(千亿) 例:输入:10000,输出:壹万 输入:10010,输出:壹万零壹拾 源码: function toChineseBig(num) {// 将接 ...

  5. python数字转换成中文大写

    python数字转换成中文大写 代码 #-*- coding:utf-8 -*- count_map = {1:1, 2:10, 3:100, 4:1000, 5:10000} #用来统计传入数值的级 ...

  6. python 把数字转换成中文大写

    def conversionString(intnumber):'''把数字转换成中文大写,例如:1->一 ,25->二十五,49->四十九Parameters----------i ...

  7. python数字转换成中文大写_python初学者笔记(2):阿拉伯数字转换成中文大写

    题:输入一个数字,转换成中文大写的写法 可运行的程序(Python 2.7.9): 1 #-*- coding: utf-8 -*- #在python2的py文件里面写中文,必须要添加一行声明文件编码 ...

  8. Java实现将数字转换成中文大写

    /** *程序功能:支持将仟亿数字转换成中文数字表示,如(110.12 转换成壹佰壹拾元壹角贰分) *算法思路:将数字,分成整数部分和小数部分(小数部分四舍五入到两位),分别进行转换,然后将转换后的结 ...

  9. 万以内的数字转换成中文大写的方法

    闲话:一个朋友是做财务的,有一天问我98745的中文大写是什么,我也不知道,但是目前好多手机的计算器是可以直接转换的,所以自己无聊也想写一段代码试试于是就有了今天的水文,但是我个人觉得不算是太水,还是 ...

最新文章

  1. aix oracle 10.2.0.1 升级 10.2.0.4,安装oracle 10.2.0.4 on aix 6.1的不同之处
  2. 非线性振动 matlab,用MATLAB分析非线性弹簧振子的振动
  3. ​【安全牛学习笔记】操作系统识别
  4. 查看Linux的磁盘使用情况
  5. 【学术相关】你在读博士期间明白的最深刻的道理是什么?
  6. 不同php文件,php-不同文件夹的不同登录(会话)
  7. mysql 多表 update sql语句总结
  8. 简化业务代码开发:看Lambda表达式如何将代码封装为数据
  9. webpack 打包第三方库_Webpack 打包第三方代码库
  10. 前端代码的整洁之道 | 技术头条
  11. 相关滤波之开篇Mosse原理及代码详解
  12. 最短路—Johnson算法(解决负权边,判断负权环)
  13. Win7环境下VS2015安装+CUDA 10.0安装配置教程以及安装环境时遇到的一些问题
  14. Win11如何查看硬盘型号?
  15. Flask蓝本创建名称错误导致的werkzeug.routing.BuildError
  16. java写俄罗斯方块难吗_用JAVA写的俄罗斯方块
  17. SSR门户项目爬坑之路(一)
  18. ETL对文件数据进行处理,进入到数据仓库
  19. Android合并音频文件
  20. 二分查找法的基本思想与实现代码

热门文章

  1. linux怎么装软件
  2. 管家婆软件登录提示:用户‘sa‘登录失败,原因:未与信任的SQL server相关联。
  3. office多级列表编号设置
  4. 移动通信平台的搭建(可语音可视屏可收发短信)
  5. html注释的爱情故事,才女李清照的爱情故事:才下眉头,却上心头
  6. 爱掼蛋电脑版 v6.4.2
  7. 这是修养还是管理艺术
  8. 笔记本实体机安装FreeBSD操作系统(KDE-Plasma5桌面环境+NVIDIA显卡驱动)
  9. [Java笔记13] 日期与时间
  10. 信息技术计算机老师继续教育培训心得,信息技术课教师继续教育心得体会