RELATEED CONSULTING
相关咨询
选择下列产品马上在线沟通
服务时间:9:30-18:00
你可能遇到了下面的问题
关闭右侧工具栏
小写数字转中文大写或大写金额的C#完整方案
  • 作者:zhaozj
  • 发表时间:2020-12-23 10:39
  • 来源:未知

本程序用于将小写数字转换为一般中文大写或中文大写金额, 提供以下功能:1. 允许任意整数或小数, 一般中文大写转换范围在(-10,000,000,000,000,000 ~ 10,000,000,000,000,000)之间, 中文大写金额转换范围在(0,? ~ 10,000,000,000,000,000)之间. 能转换所有系统接纳的输入数字, 如"0", "0.", ".0", "-.0", ".0-", "+114", "20.+"等.2. 能识别并处理任何错误输入.3. 算法稳定, 速度较快, 中文大写比较符合语言习惯

using System;using System.Text;

namespace DigitToChnText{ ///  /// 本程序用于将小写数字转换为 /// 1. 一般中文大写数字 /// 2. 人民币大写数字 /// 算法设计:黄晶 /// 程序制作:黄晶 /// 时间:2004年8月12日 ///  class DigitToChnText {  private readonly char[] chnGenText;  private readonly char[] chnGenDigit;

  private readonly char[] chnRMBText;  private readonly char[] chnRMBDigit;  private readonly char[] chnRMBUnit;

  //  // 构造函数  //  public DigitToChnText()  {   // 一般大写中文数字组   chnGenText = new char[]{'零', '一', '二', '三', '四', '五', '六', '七', '八', '九'};   chnGenDigit = new char[]{'十', '百', '千', '万', '亿'};

   // 人民币专用数字组   chnRMBText = new char[]{'零', '壹', '贰', '叁', '肆', '伍', '陆', '染', '捌', '玖'};   chnRMBDigit = new char[]{'拾', '佰', '仟', '萬', '億'};   chnRMBUnit = new char[]{'角', '分'};  }

  //  // 主转换函数  // 参数  // string strDigit - 待转换数字字符串  // bool  bToRMB  - 是否转换成人民币  // 返回  // string    - 转换成的大写字符串  //  public string Convert( string strDigit, bool bToRMB )  {   // 检查输入数字有效性   CheckDigit(ref strDigit, bToRMB);

   // 定义结果字符串   StringBuilder strResult = new StringBuilder();

   // 提取符号部分   ExtractSign( ref strResult, ref strDigit, bToRMB );

   // 提取并转换整数和小数部分   ConvertNumber( ref strResult, ref strDigit, bToRMB );

   return strResult.ToString();  }

  //  // 转换数字  //  protected void ConvertNumber( ref StringBuilder strResult, ref string strDigit, bool bToRMB )  {   int indexOfPoint;   if( -1 == ( indexOfPoint = strDigit.IndexOf('.') ) ) // 如果没有小数部分   {    strResult.Append( ConvertIntegral( strDigit, bToRMB ) );