public static class Money {private static readonly String cnNumber = "零壹贰叁肆伍陆柒捌玖";private static readonly String cnUnit = "分角元拾佰仟万拾佰仟亿拾佰仟兆拾佰仟";private static readonly String[] enSmallNumber = { "", "ONE", "TWO", "THREE", "FOUR", "FIVE", "SIX", "SEVEN", "EIGHT", "NINE", "TEN", "ELEVEN", "TWELVE", "THIRTEEN", "FOURTEEN", "FIFTEEN", "SIXTEEN", "SEVENTEEN", "EIGHTEEN", "NINETEEN" };private static readonly String[] enLargeNumber = { "TWENTY", "THIRTY", "FORTY", "FIFTY", "SIXTY", "SEVENTY", "EIGHTY", "NINETY" };private static readonly String[] enUnit = { "", "THOUSAND", "MILLION", "BILLION", "TRILLION" };// 以下是货币金额中文大写转换方法public static String GetCnString(String MoneyString) {String[] tmpString = MoneyString.Split('.');String intString = MoneyString;   // 默认为整数String decString = "";            // 保存小数部分字串String rmbCapital = "";            // 保存中文大写字串int k;int j;int n;if (tmpString.Length > 1) {intString = tmpString[0];             // 取整数部分decString = tmpString[1];             // 取小数部分
            }decString += "00";decString = decString.Substring(0, 2);   // 保留两位小数位intString += decString;try {k = intString.Length - 1;if (k > 0 && k < 18) {for (int i = 0; i <= k; i++) {j = (int)intString[i] - 48;// rmbCapital = rmbCapital + cnNumber[j] + cnUnit[k-i];     // 供调试用的直接转换n = i + 1 >= k ? (int)intString[k] - 48 : (int)intString[i + 1] - 48; // 等效于 if( ){ }else{ }if (j == 0) {if (k - i == 2 || k - i == 6 || k - i == 10 || k - i == 14) {rmbCapital += cnUnit[k - i];}else {if (n != 0) {rmbCapital += cnNumber[j];}}}else {rmbCapital = rmbCapital + cnNumber[j] + cnUnit[k - i];}}rmbCapital = rmbCapital.Replace("兆亿万", "兆");rmbCapital = rmbCapital.Replace("兆亿", "兆");rmbCapital = rmbCapital.Replace("亿万", "亿");rmbCapital = rmbCapital.TrimStart('元');rmbCapital = rmbCapital.TrimStart('零');return rmbCapital;}else {return "";   // 超出转换范围时,返回零长字串
                }}catch {return "";   // 含有非数值字符时,返回零长字串
            }}// 以下是货币金额英文大写转换方法public static String GetEnString(String MoneyString) {String[] tmpString = MoneyString.Split('.');String intString = MoneyString;   // 默认为整数String decString = "";            // 保存小数部分字串String engCapital = "";            // 保存英文大写字串
            String strBuff1;String strBuff2;String strBuff3;int curPoint;int i1;int i2;int i3;int k;int n;if (tmpString.Length > 1) {intString = tmpString[0];             // 取整数部分decString = tmpString[1];             // 取小数部分
            }decString += "00";decString = decString.Substring(0, 2);   // 保留两位小数位try {// 以下处理整数部分curPoint = intString.Length - 1;if (curPoint >= 0 && curPoint < 15) {k = 0;while (curPoint >= 0) {strBuff1 = "";strBuff2 = "";strBuff3 = "";if (curPoint >= 2) {n = int.Parse(intString.Substring(curPoint - 2, 3));if (n != 0) {i1 = n / 100;            // 取佰位数值i2 = (n - i1 * 100) / 10;    // 取拾位数值i3 = n - i1 * 100 - i2 * 10;   // 取个位数值if (i1 != 0) {strBuff1 = enSmallNumber[i1] + " HUNDRED ";}if (i2 != 0) {if (i2 == 1) {strBuff2 = enSmallNumber[i2 * 10 + i3] + " ";}else {strBuff2 = enLargeNumber[i2 - 2] + " ";if (i3 != 0) {strBuff3 = enSmallNumber[i3] + " ";}}}else {if (i3 != 0) {strBuff3 = enSmallNumber[i3] + " ";}}engCapital = strBuff1 + strBuff2 + strBuff3 + enUnit[k] + " " + engCapital;}}else {n = int.Parse(intString.Substring(0, curPoint + 1));if (n != 0) {i2 = n / 10;      // 取拾位数值i3 = n - i2 * 10;   // 取个位数值if (i2 != 0) {if (i2 == 1) {strBuff2 = enSmallNumber[i2 * 10 + i3] + " ";}else {strBuff2 = enLargeNumber[i2 - 2] + " ";if (i3 != 0) {strBuff3 = enSmallNumber[i3] + " ";}}}else {if (i3 != 0) {strBuff3 = enSmallNumber[i3] + " ";}}engCapital = strBuff2 + strBuff3 + enUnit[k] + " " + engCapital;}}++k;curPoint -= 3;}engCapital = engCapital.TrimEnd();}// 以下处理小数部分strBuff2 = "";strBuff3 = "";n = int.Parse(decString);if (n != 0) {i2 = n / 10;      // 取拾位数值i3 = n - i2 * 10;   // 取个位数值if (i2 != 0) {if (i2 == 1) {strBuff2 = enSmallNumber[i2 * 10 + i3] + " ";}else {strBuff2 = enLargeNumber[i2 - 2] + " ";if (i3 != 0) {strBuff3 = enSmallNumber[i3] + " ";}}}else {if (i3 != 0) {strBuff3 = enSmallNumber[i3] + " ";}}// 将小数字串追加到整数字串后if (engCapital.Length > 0) {engCapital = engCapital + " AND CENTS " + strBuff2 + strBuff3;   // 有整数部分时
                    }else {engCapital = "CENTS " + strBuff2 + strBuff3;   // 只有小数部分时
                    }}engCapital = engCapital.TrimEnd();return engCapital;}catch {return "";   // 含非数字字符时,返回零长字串
            }}}

转载于:https://www.cnblogs.com/lenga/p/5088964.html

C# 货币金额中文(英文)大写转换方法-工具类相关推荐

  1. VBA 金额转英文大写 数字转英文 EXCEL

    由于自己英语差,懒得转写,就在网上找了个金额转英文大写的VBA程序,但是发现and有时候会漏加,自己就稍微修改了下,程序分享出来. 使用方法:EXCEL→开发工具→Visual Basic→插入模块→ ...

  2. [水晶报表]金额转英文大写

    源文转载:http://bbs.csdn.net/topics/300021579Function (numbervar Amount) //金额转英文大写,Crystal语法local string ...

  3. java 中文转拼音_JAVA 将中文转化为拼音工具类

    将pinyin4j-2.5.0.jar (附件中有,记得解压)加入到classpath中. 工具类PinyinUtils代码见下:package com.test.utils; import net. ...

  4. 处理发票上的中文大写金额的转换工具类

    处理发票中数字金额转成中文大写金额字符串问题. 效果图: package com.szmsd.hulutianxia.util;public class ChineseNumberUtil {publ ...

  5. Java金额转换工具类

    package com.healthy.prms.common.util;import java.math.BigDecimal;/*** @ClassName: RMBUtils* @Descrip ...

  6. java 交易金额转换分,java金额元与分转换工具种

    java金额元与分转换工具类 java金额元与分转换的一个工具类. 1.元转分: 可传入字符串或者long型(隐式转换为long型也可)整数. 若传入为字符串,则通过替换小数点的方式转换,小数点有多位 ...

  7. Phalcon使用多语言环境(切换中文/英文等)

    Phalcon使用多语言环境(切换中文/英文等) lang类文件 namespace Utils; use Phalcon\Http\Request; use Phalcon\Translate\Ad ...

  8. ( 持续更新,目前含 200+ 工具类 ) DevUtils 是一个 Android 工具库, 主要根据不同功能模块,封装快捷使用的工具类及 API 方法调用。

    DevUtils GitHub About ( 持续更新,目前含 200+ 工具类 ) Roadmap DevUtils 是一个 Android 工具库,主要根据不同功能模块,封装快捷使用的工具类及 ...

  9. Redis学习篇3_事务及其监控(锁)、Jedis、SpringBoot整合Redis、RedisTemplate的json序列化、RedisUtil工具类

    目录 事务及其监控(锁) Jedis SpringBoot整合Redis RedisTemplate 默认RedisTemplate来源 关于中文序列化问题 RedisUtil工具类 一.事务及其监控 ...

最新文章

  1. linux下的daemon进程
  2. Unity 播放音频文件
  3. 实战SSM_O2O商铺_12【商铺注册】View层之前台页面
  4. Fiori configuration edit also needs enqueue
  5. java下包内继承时编译不过解决方案
  6. 公司服务器文件保存出错,R服务器错误保存文件没有这样的文件或目录(Ubuntu)...
  7. 好看的某云紫色渐变HTML网站源码
  8. 苏格拉底与失恋者的对话————最经典的失恋哲理 ...
  9. python遗传算法有多慢_遗传算法框架GAFT优化小记
  10. 解决Keras 与 Tensorflow 版本之间的兼容性问题,导入keras报错:module 'tensorflow.python.keras.backend' has no attribute
  11. Monte Carlo采样
  12. 阶段3 3.SpringMVC·_04.SpringMVC返回值类型及响应数据类型_8 响应json数据之响应json格式数据...
  13. 服务器2003系统U盘安装方法,u启动windows2003PE工具箱
  14. 搅拌反应釜cad图纸_求夹套反应釜设计CAD图纸
  15. 平安京服务器维护,决战平安京无法登陆怎么解决 无法登陆原因及解决方案一览...
  16. 刻录光驱不能访问出现函数不正确问题解决
  17. 西农大 Java 实验四 第三题
  18. Cannot find current proxy: Set 'exposeProxy' property on Advised to 'true' to make it available
  19. 主流的企业级报表工具,国内报表工具排名前列
  20. 阿里旗下,豆瓣等滑块验证码解决问题

热门文章

  1. 消费者存在潜在需求的原因分析
  2. TCL转型启示录:大叔级企业拥抱互联网才能迎来第二春
  3. spark-1-spark core
  4. RPA之家手把手带你入门Blue Prism教程系列8_创建并运行一段Process
  5. matlab正版 在两个上使用,有人使用正版MATLAB吗?
  6. MSQL优化基础(frequence直方图选择率)
  7. 压缩包密码忘记了,可以删除吗?
  8. Style2paints:专业的AI漫画线稿自动上色工具
  9. kali系统搭建本地服务器,kali linux 下搭建git服务器
  10. 空战游戏的制作,(被人拿去出书的就是这个,无奈啊)