当前位置:  编程技术>.net/c#/asp.net

C# 数字(英文)货币转换为大写的方法

    来源: 互联网  发布时间:2014-08-30

    本文导语:  代码示例: //实现将数字货币转换为大写 public class MoneyToString { private static readonly String cnNumber = "零壹贰叁肆伍陆柒捌玖"; private static readonly String cnUnit = "分角元拾佰仟万拾佰仟亿拾佰仟兆拾佰仟";   private static readonly String[]...

代码示例:

//实现将数字货币转换为大写
public class MoneyToString
{
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 ? (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 "";   // 含非数字字符时,返回零长字串      
}
        }
    }


    
 
 

您可能感兴趣的文章:

  • c#判断输入内容是否数字的代码
  • c#实现TextBox只允许输入数字
  • C# 验证码一例(随机数字加字母)
  • C#实现将千分位字符串转换成数字的方法
  • c#判断输入的是不是数字的小例子
  • C# 正则判断一个数字的格式是否有逗号的代码
  • C#实现在两个数字之间生成随机数的方法
  • c#中判断字符串是不是数字或字母的方法
  • C# WinForm窗体编程中处理数字的正确操作方法
  • C#实现根据数字序号输出星期几的简单实例
  • C# 大数字运算的小例子
  • C# 判断字符串第一位是否为数字或中文的代码
  • C# 判断字符串第一位是否为数字
  • C# 判断是否为数字的方法二则
  • C#实现大数字运算的实例代码
  • C# 实现只能输入数字的文本框
  • c# 正则表达式 验证数字的方法
  • c# 数字转换中文字符的代码
  • C#把数字转换成大写金额的代码实例
  • c# 验证数字和日期的方法与实现代码
  • 利用正则表达式(只录入中文,数字,英文)
  • 请问如何解决FC5使用或安装软件时不断出现一堆英文和数字?
  • linux下的英文和数字字符太模糊,如何利用微软的宋体呢?
  • 请问:linux下C/C++编程,怎样把含有中英文及数字其他字符的字符串,转化成utf-8编码,又怎样将其转换回来。iconv好像不支持混合?
  • 请各位怎样在JTextField中屏蔽掉英文字母,而只输入数字?
  • SQL货币数字转英文字符语句
  • 使用正则限制input框只能输入数字/英文/中文等等
  • sql server 提取数字、英文与中文的代码
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 急救:如何在jsp中将阿拉伯数字转换成中文大写,如:'1228008.98' 转换为 '壹佰贰拾贰万扒仟零扒圆玖角扒分'各位大虾给看看,一定给分!!
  • 阿拉伯数字转大写中文_财务常用sql存储过程
  • 数字金额大写转换器制作代码分享(人民币大写转换)
  • PHP把数字转成人民币大写的函数分享
  • 使用C#实现阿拉伯数字到大写中文的转换
  • 有人能提供一个Java版的数字金额转换成大写金额的程序吗?
  • 请问各位大侠:如何将小写数字转换成大写?
  • 这是一个数字转化为中文大写的程序,但缺转化小数部分,谁帮我添上?给高分!!(两位小数)
  • linux c/c++ IP字符串转换成可比较大小的数字
  • 数字签名,数字签名,数字签名!!
  • java实现判断字符串是否全是数字的四种方法代码举例
  • asp正则表达式匹配数字$数字$数字$
  • 高手请赐招:数字签名与数字认证的区别,尤其是概念上的区别。谢谢!
  • 请问linux用户名能否用数字?怎么才能用数字开头呢?
  • 请教:Java 中数字字符串转化为数字的问题
  • awk的数字运算中,数字变量的值的范围多少?
  • jquery禁止输入数字以外的字符的示例(纯数字验证码)
  • 对applet坐数字签名后,如果重新用jar对applet打包,需要重新做applet数字签名吗?
  • 请问,用c如何将一串数字字符转换成数字
  • 只能是字母或数字或者是字母和数字的组合的正则previousSibling
  • 请问Java中如何在控制台一行内输入n个数字,然后再在一行内输出这些数字
  • sql server 字段 全角数字转半角数字的代码分享
  • c语言中怎样从字母和数字组成的字符串中提取数字?
  • 如何让IE认识applet所带的数字签名,而不是让证书仓库认识这个带数字签名的applet,就是说不装jdk也可以在IE里面使用带有签名的applet,详情请进
  • php生成随机字符串(自定义纯数字、纯字母或数字字母混合)
  • 关于数字签名的几点疑问??另:csdn的数字签名帖子我都看过,不要介绍给我,我是诚心提问!!
  • python实现猜数字游戏(无重复数字)示例分享
  • awk的数字计算,能指为long long 64位整数么?
  • 数字空间系统 DSpace


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    sql server 字段 全角数字转半角数字的代码分享 iis7站长之家