人民币金额大小写转换,三行代码

//完善了一下查询到的方法,支持小数,保留2位小数

  1. public string NumGetStr(double Num)
  2. {
  3. string[] DX_SZ = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖", "拾" };//大写数字
  4. string[] DX_DW = { "元", "拾", "佰", "仟", "万", "拾", "佰", "仟", "亿", "拾", "佰", "仟", "万" };
  5. string[] DX_XSDS = { "角", "分" };//大些小数单位
  6. if (Num == 0) return DX_SZ[0];
  7. Boolean IsXS_bool = false;//是否小数
  8. string NumStr;//整个数字字符串
  9. string NumStr_Zs;//整数部分
  10. string NumSr_Xs = "";//小数部分
  11. string NumStr_R = "";//返回的字符串
  12. NumStr = Num.ToString();
  13. NumStr_Zs = NumStr;
  14. if (NumStr_Zs.Contains("."))
  15. {
  16. NumStr = Math.Round(Num, 2).ToString();
  17. NumStr_Zs = NumStr.Substring(0, NumStr.IndexOf("."));
  18. NumSr_Xs = NumStr.Substring((NumStr.IndexOf(".") + 1), (NumStr.Length - NumStr.IndexOf(".") - 1));
  19. IsXS_bool = true;
  20. }
  21. int k = 0;
  22. Boolean IsZeor = false;//整数中间连续0的情况
  23. for (int i = 0; i < NumStr_Zs.Length; i++) //整数
  24. {
  25. int j = int.Parse(NumStr_Zs.Substring(i, 1));
  26. if (j != 0)
  27. {
  28. NumStr_R += DX_SZ[j] + DX_DW[NumStr_Zs.Length - i - 1];
  29. IsZeor = false; //没有连续0
  30. }
  31. else if (j == 0)
  32. {
  33. k++;
  34. if (!IsZeor && !(NumStr_Zs.Length == i + 1)) //等于0不是最后一位,连续0取一次
  35. {
  36. //有问题
  37. if (NumStr_Zs.Length - i - 1 >= 4 && NumStr_Zs.Length - i - 1<=6)
  38. NumStr_R += DX_DW[4] + "零";
  39. else
  40. if (NumStr_Zs.Length - i - 1 > 7)
  41. NumStr_R += DX_DW[8] + "零";
  42. else
  43. NumStr_R += "零";
  44. IsZeor = true;
  45. }
  46. if (NumStr_Zs.Length == i + 1)//  等于0且是最后一位 变成 XX元整
  47. NumStr_R += DX_DW[NumStr_Zs.Length - i - 1];
  48. }
  49. }
  50. if (NumStr_Zs.Length>2 && k == NumStr_Zs.Length - 1)
  51. NumStr_R = NumStr_R.Remove(NumStr_R.IndexOf('零'), 1); //比如1000,10000元整的情况下 去0
  52. if (!IsXS_bool) return NumStr_R + "整"; //如果没有小数就返回
  53. else
  54. {
  55. for (int i = 0; i < NumSr_Xs.Length; i++)
  56. {
  57. int j = int.Parse(NumSr_Xs.Substring(i, 1));
  58. NumStr_R += DX_SZ[j] + DX_XSDS[NumSr_Xs.Length - i - 1];
  59. }
  60. }
  61. return NumStr_R;
  62. }

2016.6.16更新。

发现这么一段代码,我整个人都。。

  1. public static String ConvertToChinese(Decimal number)
  2. {
  3. var s = number.ToString("#L#E#D#C#K#E#D#C#J#E#D#C#I#E#D#C#H#E#D#C#G#E#D#C#F#E#D#C#.0B0A");
  4. var d = Regex.Replace(s, @"((?<=-|^)[^1-9]*)|((?'z'0)[0A-E]*((?=[1-9])|(?'-z'(?=[F-L\.]|$))))|((?'b'[F-L])(?'z'0)[0A-L]*((?=[1-9])|(?'-z'(?=[\.]|$))))", "${b}${z}");
  5. var r = Regex.Replace(d, ".", m => "负元空零壹贰叁肆伍陆柒捌玖空空空空空空空分角拾佰仟万亿兆京垓秭穰"[m.Value[0] - '-'].ToString());
  6. return r;
  7. }

上面那么一大段的这几句也可以实现 呵呵.. Interesting

正则真强大。

C#人民币金额大写转换的更多相关文章

  1. js浮点数计算问题 + 金额大写转换

    一 js浮点数计算问题解决方案: 1.使用 NumberObject.toFixed(num) 方法 toFixed() 方法可把 Number 四舍五入为指定小数位数的数字. 2.较精度计算浮点数 ...

  2. JS进行人民币大小写转换

    //数字金额大写转换(可以处理整数,小数,负数) function upDigit() { digit=$("#digit").html(); n=digit.replace(/\ ...

  3. FastReport调用Delphi中的人民币大写转换自定义函数

    FastReport调用Delphi中的人民币大写转换自定义函数   FastReport调用Delphi中的人民币大写转换自定义函数 function TJzpzEdit1.MoneyCn(mmje ...

  4. JS数字金额大写转换

    /** 数字金额大写转换(可以处理整数,小数,负数) */ var digitUppercase = function(n) { var fraction = ['角', '分']; var digi ...

  5. Java版 数字金额大写转换

    需求:读入一个浮点数值,将其转化为中文金额的大写形式.如123.45,转化为:壹佰贰拾叁元肆角伍分. 以下是各种情况要完善: 1. 当金额为整数,只表示整数部分,省略小数部分,并添加“整”字.如123 ...

  6. python实现人民币大写转换

    问题描述: 银行在打印票据的时候,常常需要将阿拉伯数字表示的人民币金额转换为大写表示,现在请你来完成这样一个程序. 在中文大写方式中,0到10以及100.1000.10000被依次表示为: 零 壹 贰 ...

  7. java实现人民币金额大写

    在与财务相关的应用中,经常会用到人民币金额的大写,比如发票的打印程序. 本题的任务是:从键盘输入一个十亿以内的正整数(int类型),把它转换为人民币金额大写(不考虑用户输入错误的情况). 比如,用户输 ...

  8. 人民币大写金额转换C#方法

    方法的代码如下: /// <summary> /// 人民币大写 /// </summary> /// <param name="input"> ...

  9. java人民币读法转换

    实现浮点数转换成人民币读法字符串 编写一个程序,将浮点数转换成人民币读法字符串,例如,将1006.333转换为壹千零陆元叁角叁分. 题意分析: 将浮点数分成整数部分和小数部分,分开处理整数部分和小数部 ...

随机推荐

  1. Web Api试图加载格式不正确的程序,解决方法

    Web Api试图加载格式不正确的程序,错误如下: 问题原因: 出现上述问题的原因是,所加载的程序集中有32位的,也有64位的,IIS 7 程序池 在Windows下.Net FrameWork是64 ...

  2. ORACLE sqlprompt设置

    SYS@orcl>defineDEFINE _DATE           = "17-JUN-19" (CHAR)DEFINE _CONNECT_IDENTIFIER = ...

  3. Python实现人脸识别

    识别图片 #coding=utf-8 import requests,cv2 import re import os import bs4 #2.读取图片 filename = 'E:/Python/ ...

  4. 生成base64位图片验证码

    import org.springframework.util.Base64Utils; import javax.imageio.ImageIO; import java.awt.*; import ...

  5. 关于加快INSERT语句执行速度和HINT /*+ append */及/*+ append nologging */的使用

    (非归档模式下)创建表T01: SQL> create table t01 as select * from dba_objects where 1=2; Table created. (非归档 ...

  6. 软件-客户端管理工具-SourceTree-帮助:免费Git客户端:sourcetree详细介绍

    ylbtech-软件-客户端管理工具-SourceTree-帮助:免费Git客户端:sourcetree详细介绍 1.返回顶部 1. 一.简介:一个用于Windows和Mac的免费Git客户端.Sou ...

  7. 解决保存快照失败后redis无法写入的问题( Redis is configured to save RDB snapshots)

    MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk. Com ...

  8. 阶段3 1.Mybatis_04.自定义Mybatis框架基于注解开发_2 回顾自定义mybatis的流程分析

  9. 【Hibernate】---【注解】一对多

    一.核心配置文件 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-con ...

  10. FiddlerCore修改http返回结果

    static void FiddlerApplication_BeforeRequest(Session oSession) { oSession.bBufferResponse = true; } ...