首页 ┆ 网站地图 ┆ 在线留言 ┆ 游戏资讯 ┆ 资源下载 ┆ 端午节祝福 ┆ 迅雷在线影视 ┆淘宝手机在线充值 ┆淘宝游戏点卡充值 
设为首页
加入收藏
联系我们
高级搜索
您当前的位置: 主页>NET专区>C#语言>C#实现阿拉伯数字转变成大写的类
C#实现阿拉伯数字转变成大写的类
来源: 发布时间:2008-04-01 发布人: 浏览: 人次   字体: [ ]  

财务中经常会用到数字大写的情况,本文介绍在C#如何将数字转变成大写。

例如1234567.89,转变成大写就是 壹佰贰拾叁万肆仟伍佰陆拾柒元捌角玖分

调用方法:

decimal a = 1234567.89M;
string str = Utility.Finance.ConvertToCn(a);

转换类如下:

using System;
using System.Collections.Generic;
using System.Text;

namespace Utility
{
    
public class Finance
    {
        
public static string ConvertToCn(decimal num)
        {
            
string str1 = "零壹贰叁肆伍陆柒捌玖";            //0-9所对应的汉字 
            string str2 = "万仟佰拾亿仟佰拾万仟佰拾元角分"//数字位所对应的汉字 
            string str3 = "";    //从原num值中取出的值 
            string str4 = "";    //数字的字符串形式 
            string str5 = "";  //人民币大写金额形式 
            int i;    //循环变量 
            int j;    //num的值乘以100的字符串长度 
            string ch1 = "";    //数字的汉语读法 
            string ch2 = "";    //数字位的汉字读法 
            int nzero = 0;  //用来计算连续的零值是几个 
            int temp;            //从原num值中取出的值 

            num 
= Math.Round(Math.Abs(num), 2);    //将num取绝对值并四舍五入取2位小数 
            str4 = ((long)(num * 100)).ToString();        //将num乘100并转换成字符串形式 
            j = str4.Length;      //找出最高位 
            if (j > 15) { return "溢出"; }
            str2 
= str2.Substring(15 - j);   //取出对应位数的str2的值。如:200.55,j为5所以str2=佰拾元角分 

            
//循环取出每一位需要转换的值 
            for (i = 0; i < j; i++)
            {
                str3 
= str4.Substring(i, 1);          //取出需转换的某一位的值 
                temp = Convert.ToInt32(str3);      //转换为数字 
                if (i != (j - 3&& i != (j - 7&& i != (j - 11&& i != (j - 15))
                {
                    
//当所取位数不为元、万、亿、万亿上的数字时 
                    if (str3 == "0")
                    {
                        ch1 
= "";
                        ch2 
= "";
                        nzero 
= nzero + 1;
                    }
                    
else
                    {
                        
if (str3 != "0" && nzero != 0)
                        {
                            ch1 
= "" + str1.Substring(temp * 11);
                            ch2 
= str2.Substring(i, 1);
                            nzero 
= 0;
                        }
                        
else
                        {
                            ch1 
= str1.Substring(temp * 11);
                            ch2 
= str2.Substring(i, 1);
                            nzero 
= 0;
                        }
                    }
                }
                
else
                {
                    
//该位是万亿,亿,万,元位等关键位 
                    if (str3 != "0" && nzero != 0)
                    {
                        ch1 
= "" + str1.Substring(temp * 11);
                        ch2 
= str2.Substring(i, 1);
                        nzero 
= 0;
                    }
                    
else
                    {
                        
if (str3 != "0" && nzero == 0)
                        {
                            ch1 
= str1.Substring(temp * 11);
                            ch2 
= str2.Substring(i, 1);
                            nzero 
= 0;
                        }
                        
else
                        {
                            
if (str3 == "0" && nzero >= 3)
                            {
                                ch1 
= "";
                                ch2 
= "";
                                nzero 
= nzero + 1;
                            }
                            
else
                            {
                                
if (j >= 11)
                                {
                                    ch1 
= "";
                                    nzero 
= nzero + 1;
                                }
                                
else
                                {
                                    ch1 
= "";
                                    ch2 
= str2.Substring(i, 1);
                                    nzero 
= nzero + 1;
                                }
                            }
                        }
                    }
                }
                
if (i == (j - 11|| i == (j - 3))
                {
                    
//如果该位是亿位或元位,则必须写上 
                    ch2 = str2.Substring(i, 1);
                }
                str5 
= str5 + ch1 + ch2;

                
if (i == j - 1 && str3 == "0")
                {
                    
//最后一位(分)为0时,加上“整” 
                    str5 = str5 + '';
                }
            }
            
if (num == 0)
            {
                str5 
= "零元整";
            }
            
return str5;
        }
        
public static string ConvertToCn(string numstr)
        {
            
decimal num = 0;
            
if (decimal.TryParse(numstr, out num))
            {
                
return ConvertToCn(num);
            }
            
else
            {
                
return "非数字形式!";
            }
        }
    }
}

相 关 文 章   发布商链接
·什么是装箱和拆箱?及其相应的操作事...
·C#获取IE临时文件夹中的文件代码
·什么是c#深拷贝与浅拷贝及其代码示例
·c#访问修饰符介绍及其应用实例
·C#如何获取文件路径中的文件名?
·c#子线程控制进度条的一个简单例子
·什么是泛型编程思想?及其简单的应用...
·如何使用C#获取IIS服务器版本?
·如何在c#中去掉字符串中的回车符?
·C#如何从文本文件读取信息并使用Arra...
 §最新评论:(评论内容只代表网友观点,与本站立场无关!)
网名: 验证码:  【所有评论】【↑返回顶部
评 分: 12 345
评论内容:(不能超过500字,请自觉遵守互联网相关政策法规。[按 Ctrl+Enter 可直接提交]
注意:请勿在本站发布政治话题、色情及违反法律的内容。
IT知道网 声明:刊登此文章是为了传递更多信息,文章内容仅供参考,转载请注明出处。
推 荐 文 章
·最为经典的C#操作文件的方法...
·有助快速理解C#委托和事件之...
·C#泛型学习笔记总结
·c#语言从dbf数据库提取数据并
·C#编写控制线程的运行和线程...
·怎样在C#中删除只读文件及其...
·C#函数中返回多个值的两种方...
·如何在C#中插入照片到Excel文
·如何在c#中获取事件注册的方...
·C#对timer类的使用操作代码
·什么是泛型?泛型的一些概述
·C#如何从文本文件读取信息并...
·如何在c#中去掉字符串中的回...
·如何使用C#获取IIS服务器版本...
·什么是泛型编程思想?及其简...
热 门 文 章
·C#如何获取文件路径中的文件...
·c#中收发邮件处理代码(POP3,...
·浅谈接口和抽象类的区别,加...
·什么是c#深拷贝与浅拷贝及其...
·C#语言实现创建、删除和移动...
·C#中关于四舍五入函数的讨论...
·c#中的ArrayList属性祥解及其...
·快速进行List排序的通用方法...
·C#对timer类的使用操作代码
·C#如何从文本文件读取信息并...
·C#语言实现从XML文件导出数据...
·用C#编写ActiveX控件代码实例
·如何在c#中去掉字符串中的回...
·String.Split 方法使用及其代...
·C#语言绘制实时曲线图代码实...
网站首页 - 关于本站 - 加入收藏 - 网站地图 - 友情连接 - 在线留言 - 联系我们 - 返回顶部
Copyright © 2007 IT知道网.[冀ICP备07026896号]. All Rights Reserved .