说明:金额转换可以转换50位的数值,单位从分到级。对于中间部分是否显示零,
可以根据修改TranslateJInen()函数修改。
中间数值为零的去掉不显示
 public string GetChCapitalNumber(string canshu)
中间数值为零的显示
public string GetChCapitalNumberFill(string canshu)

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Text.RegularExpressions;
namespace Jinen_Translate
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

//判断粘贴而来的数据是否满足条件,只能为数字和小数点
        public static bool IsNumeric(string value)
        {
            return Regex.IsMatch(value, @"^[+-]?\d*[.]?\d*$");
        }

//计算小数点之后一共有几位数字  2 结果为0  3.258 结果为3
        //超出十位的小数点记录为10位
        public int Fun_getLengthPoint(string inputText)
        {
            int PointLength = 0;
            int count = inputText.Length;
            //记录输入字符串的长度
            int jilu = 0;
            /*记录小数点所在的位置
            当出现小数点时,停止循环*/
            for (int i = 0; i < count; i++)
            {
                jilu++;
                if (inputText[i] == '.')
                    break;
            }

if (jilu == count)
            {
                PointLength = 0;
                return PointLength;
            }

//记录输入字符串的长度
            else
            {
                int dian_point = inputText.IndexOf(".");
                //采集小数点以后的字符串。   int dian = input.IndexOf(".");记录小数点所在的位置
                string base_last = inputText.Substring(dian_point + 1, count - jilu);
                //记录小数点之后数的位数
                PointLength = base_last.Length;
                //返回小数点一共有几位数字
                return PointLength;
            }
        }

//Dupliacte() 创建重复字符串
        public string Duplicate(string mstr, int ncnt)
        {
            // 使用 StringBuilder 加速字符串重复创建的速度
            StringBuilder dstr = new StringBuilder();
            int icnt = 0;

for (icnt = 0; icnt < ncnt; icnt++)
            {
                dstr.Append(mstr);
            }

return dstr.ToString();
        }

//截取字符串
        public string Left(string mdata, int leng)
        {
            mdata = mdata.Trim();
            if (mdata.Length < leng)
                leng = mdata.Length;

return mdata.Trim().Substring(0, leng);
        }

//取得所有的字符串
        public String Fun_getText(string inputText)
        {
            //记录输入字符串的长度
            int jilu = 0;
            int count = inputText.Length;
            /*记录小数点所在的位置
            当出现小数点时,停止循环*/
            for (int i = 0; i < count; i++)
            {
                jilu++;
                if (inputText[i] == '.')
                    break;
            }

if (jilu == count)
            {
                string number1 = inputText;
                return number1;
            }
            else
            {
                //采集小数点以前的字符串
                string base_hade = inputText.Substring(0, jilu - 1);
                int dian_point = inputText.IndexOf(".");
                //采集小数点以后的字符串。   int dian = input.IndexOf(".");记录小数点所在的位置
                string base_last = inputText.Substring(dian_point + 1, count - jilu);
                //形成新的字符串,去掉了小数点
                string number1 = base_hade + base_last;
                return number1;
            }
        }
    
        // #region GetFourChNumber() 取得每四位数的中文位数字 (万、亿、兆...)
        public string GetFourChNumber(int iDigit)
        {
            string sDigit = "";

// 限于整数态的上限,‘京’之后的中文数字是用不到
            switch (iDigit)
            {
                case 0:
                    sDigit = "";
                    break;
                case 1:
                    sDigit = "万";
                    break;
                case 2:
                    sDigit = "亿";
                    break;
                case 3:
                    sDigit = "兆";
                    break;
                case 4:
                    sDigit = "京";
                    break;
                case 5:
                    sDigit = "垓";
                    break;
                case 6:
                    sDigit = "秭";
                    break;
                case 7:
                    sDigit = "穰";
                    break;
                case 8:
                    sDigit = "沟";
                    break;
                case 9:
                    sDigit = "涧";
                    break;
                case 10:
                    sDigit = "正";
                    break;
                case 11:
                    sDigit = "载";
                    break;
                case 12:
                    sDigit = "极";
                    break;
                default:
                    sDigit = "∞";
                    break;
            }

return sDigit;
        }

//获得数据的一个一个变为大写数字
        public string ChCapitalNumber(string NStr)
        {
            NStr = Left(NStr, 1);

switch (NStr)
            {
                case "0":
                    NStr = "零";
                    break;

case "1":
                    NStr = "壹";
                    break;

case "2":
                    NStr = "贰";
                    break;

case "3":
                    NStr = "参";
                    break;

case "4":
                    NStr = "肆";
                    break;

case "5":
                    NStr = "伍";
                    break;

case "6":
                    NStr = "陆";
                    break;

case "7":
                    NStr = "柒";
                    break;

case "8":
                    NStr = "捌";
                    break;

case "9":
                    NStr = "玖";
                    break;

default:
                    NStr = "?";
                    break;
            }
            return NStr;
        }

//省略零的结果转换
        public string GetChCapitalNumber(string NumStr)
        {
            string ChStr = "", ChSubStr = "", tmpStr = "";
            int iCnt = 0, jCnt = 0, kCnt = 0, lCnt = -1, nCnt = 0;
            nCnt = NumStr.Length;

// 中文数字以四位数为一个处理单位(万、亿、兆、京....)
            iCnt = nCnt % 4;
            NumStr = Duplicate("0", 4 - iCnt) + NumStr;
            nCnt = NumStr.Length;

for (iCnt = 0; iCnt < nCnt; iCnt += 4)
            {
                lCnt++;
                ChSubStr = "";

for (jCnt = 0; jCnt < 4; jCnt++)
                {
                    kCnt = nCnt - iCnt - jCnt - 1;
                    tmpStr = ChCapitalNumber(NumStr.Substring(kCnt, 1));

if (tmpStr == "零")
                    {
                        if (Left(ChSubStr, 1) != "零" && Left(ChSubStr, 1) != "")
                            ChSubStr = tmpStr + ChSubStr;
                    }
                    else
                    {
                        switch (jCnt)
                        {
                            case 0:
                                ChSubStr = tmpStr;
                                break;
                            case 1:
                                ChSubStr = tmpStr + "拾" + ChSubStr;
                                break;
                            case 2:
                                ChSubStr = tmpStr + "佰" + ChSubStr;
                                break;
                            case 3:
                                ChSubStr = tmpStr + "仟" + ChSubStr;
                                break;
                            default:
                                ChSubStr = tmpStr + ChSubStr;
                                break;
                        }
                    }
                }

if (ChSubStr == "零" && Left(ChStr, 1) != "" && Left(ChStr, 1) != "零")
                    ChStr = "零" + ChStr;
                else
                {
                    if (ChSubStr != "")
                    {
                        // 取得10000的次方中文数字
                        // 限于整数态的上限,‘京’之后的中文数字是用不到
                        ChStr = ChSubStr + GetFourChNumber(lCnt) + ChStr;
                    }
                }
            }

if (ChStr == "")
                ChStr = "零";
            else if (Left(ChStr, 1) == "零")
                ChStr = ChStr.Substring(1, ChStr.Length - 1);

return ChStr;
        }

//包括零的结果运算
        public string GetChCapitalNumberFill(string NumStr)
        {
            string ChStr = "", ChSubStr = "", tmpStr = "";
            int iCnt = 0, jCnt = 0, kCnt = 0, lCnt = -1, nCnt = 0;
            nCnt = NumStr.Length;

// 中文数字以四位数为一个处理单位(万、亿、兆、京....)
            iCnt = nCnt % 4;
            NumStr = Duplicate("0", 4 - iCnt) + NumStr;
            nCnt = NumStr.Length;

for (iCnt = 0; iCnt < nCnt; iCnt += 4)
            {
                lCnt++;
                ChSubStr = "";

for (jCnt = 0; jCnt < 4; jCnt++)
                {
                    kCnt = nCnt - iCnt - jCnt - 1;
                    tmpStr = ChCapitalNumber(NumStr.Substring(kCnt, 1));

switch (jCnt)
                    {
                        case 0:
                            ChSubStr = tmpStr;
                            break;
                        case 1:
                            ChSubStr = tmpStr + "拾" + ChSubStr;
                            break;
                        case 2:
                            ChSubStr = tmpStr + "佰" + ChSubStr;
                            break;
                        case 3:
                            ChSubStr = tmpStr + "仟" + ChSubStr;
                            break;
                        default:
                            ChSubStr = tmpStr + ChSubStr;
                            break;
                    }
                }

if (ChSubStr != "")
                {
                    // 取得10000的次方中文数字
                    // 限于整数态的上限,‘京’之后的中文数字是用不到
                    ChStr = ChSubStr + GetFourChNumber(lCnt) + ChStr;
                }
            }

while (Left(ChStr, 1) == "零" && ChStr.Length > 1)
            {
                if (Left(ChStr, 1) == "零")
                    ChStr = ChStr.Substring(2, ChStr.Length - 2);
            }

return ChStr;
        }
       // 金额转换
        public String TranslateJinen(string canshu)
        {
            string result;
            if (!IsNumeric(canshu))
            {
                result = "Error!";
                return result;
            }
            else
            {
                if (canshu.Length > 50)
                {
                    result = "数值太大,转换失败!";
                    return result;
                }
                else
                {
                    int t = Fun_getLengthPoint(canshu);  //t为传人参数的小数点后面的位数 如2.56 t=2
                    if (t == 0)
                    {
                        string jin = Fun_getText(canshu);
                        jin = GetChCapitalNumberFill(canshu);
                        string Tran_jin = jin + "元零角零分";
                        return Tran_jin;
                    }
                    else
                    {
                        string jin = Fun_getText(canshu) + "00";                 //以防只输入一位小数,人为地在后面加两个0
                        string jin_head = jin.Substring(0, jin.Length - 2 - t);      //截取小数点以后的两位数值                   
                        string jin_last_f = jin.Substring(jin_head.Length, 1);      //截取小数点之后的第一位数值  如45.235 结果为2
                        string jin_last_l = jin.Substring(jin_head.Length + 1, 1); //截取小数点之后的第二位数值  如45.235 结果为3
                        jin_head = GetChCapitalNumberFill(jin_head);
                        jin_last_f = ChCapitalNumber(jin_last_f);
                        jin_last_l = ChCapitalNumber(jin_last_l);
                        string Tran_jin = jin_head + "元" + jin_last_f + "角" + jin_last_l + "分";
                        return Tran_jin;
                    }
                }
            }

}

private void Action_Click(object sender, EventArgs e)
        {
            DaXieJinen.Text = TranslateJinen(Jinen.Text);
        }
    }

.NET下金额大小写转换的更多相关文章

  1. delphi 金额大小写转换函数

    {*------------------------------------------------ 金额大小写转换函数 @author 王云盼 @version V1506.01 在delphi7测 ...

  2. double四舍五入,商品金额大小写转换,设置货币的小数位数跟格式输出,进制转化

      1:计算double值四舍五入的方法 对小数数值进行四舍五入,首先应该确认保留小数位, 如果数值的小数精度大于保留小数位,那么开始四舍五入计算.四舍五入的方法非常简单,在所有要丢失精度的小数位中加 ...

  3. 金额大小写转换和input失去焦点触发事件

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  4. java 金额的大小写转换类

    /** *金额大小写转换工具类 */ public class MoneyUtil { /** 大写数字 */ private static final String[] NUMBERS = { &q ...

  5. VSCode设置大小写转换的快捷键

    本文已同步到专业技术网站 www.sufaith.com, 该网站专注于前后端开发技术与经验分享, 包含Web开发.Nodejs.Python.Linux.IT资讯等板块. VSCode在默认情况下没 ...

  6. 【Linux基础】VI命令模式下大小写转换

    [开始位置] ---- 可以指定开始的位置,默认是光标的当前位置 gu ---- 把选择范围全部小写 gU ---- 把选择范围全部大写 [结束位置] ---- 可以跟着类似的w,6G,gg等定位到错 ...

  7. 用vim处理字符的大小写转换

    转载: http://blog.csdn.net/ruixj/article/details/3765385 http://www.linuxsong.org/2010/09/vim-convert- ...

  8. php 字母大小写转换的函数

    分享下,在php编程中,将字母大小写进行转换的常用函数. 1.将字符串转换成小写strtolower(): 该函数将传入的字符串参数所有的字符都转换成小写,并以小定形式放回这个字符串 2.将字符转成大 ...

  9. JAVA之旅(十六)——String类,String常用方法,获取,判断,转换,替换,切割,子串,大小写转换,去除空格,比较

    JAVA之旅(十六)--String类,String常用方法,获取,判断,转换,替换,切割,子串,大小写转换,去除空格,比较 过节耽误了几天,我们继续JAVA之旅 一.String概述 String时 ...

随机推荐

  1. NGUI 界面自适应

    关于 NGUI 的界面自动适应不同的手机分辨率,网上已经够多的了.如果你点进了这个网页,推荐一下这一篇吧: http://www.xuanyusong.com/archives/2536 下面是我自己 ...

  2. MySQL慢日志监控脚本实例剖析

    公司线上的 MySQL 慢日志,之前一直没有做好监控.趁着上周空闲,我就把监控脚本写了下,今天特地把代码发出来与51博友分享一下. 针对脚本的注解和整体构思,我会放到脚本之后为大家详解. 1 2 3 ...

  3. 云计算之路-阿里云上:消灭“黑色n秒”第二招——给w3wp进程指定CPU核

    虽然昨天的第一招失败了,但是从失败中我们学到了与多核CPU相关的Processor Affinity(处理器关联)的知识. 既然我们可以让.NET程序的不同线程运行于指定的CPU核,那是不是也可以让I ...

  4. Network - 工具列表

    Tcpdump homepage - tcpdump wiki - tcpdump Wireshark homepage - wireshark wiki - wireshark Fiddler ho ...

  5. 『设计前沿』14款精致的国外 iOS7 图标设计示例

    每天都有大量的应用程序发布到 iOS App Store 上,在数量巨大的应用中想要引起用户的主要,首要的就是独特的图标设计.这篇文章收集了14款精致的国外 iOS7 图标设计示例,希望能带给你设计灵 ...

  6. SQL查询作业执行情况

    查询作业的执行情况sql: SELECT [JobName] = JOB.name, [Step] = HIST.step_id, [StepName] = HIST.step_name, [Mess ...

  7. 淘宝API开发系列---阿里.聚石塔.开放平台的使用

    好久没有继续跟进淘宝的API使用了,有很多做相关应用的同行都来咨询,很多都因为自己开发工作比较忙而没有来得及好的处理,前几天,有一个朋友叫帮忙指导如何使用淘宝API,由于原来有一些成熟的例子应用,因此 ...

  8. Python入门笔记(19):Python函数(2):函数/方法装饰器

    一.装饰器(decorators) 装饰器的语法以@开头,接着是装饰器函数的名字.可选参数. 紧跟装饰器声明的是被装饰的函数和被装饰的函数的可选参数,如下: @decorator(dec_opt_ar ...

  9. 第一个app.总结

    前记: 最近想整点外快,但是又没啥子技术,唉,学了一下android,想写点游戏啥的,,唉,可惜,美工,UI始终不行,代码也勉勉强强... 不过总的来说也是收获参半吧,也是有一些新的知识学到了嘛,至少 ...

  10. 线段树的区间更新---A Simple Problem with Integers

    POJ   3468 Description 给出了一个序列,你需要处理如下两种询问. "C a b c"表示给[a, b]区间中的值全部增加c (-10000 ≤ c ≤ 100 ...