数字转大写

转载:http://www.oschina.net/code/snippet_102306_4705

1.JS实现方法

static string ConvertToChinese(double x) 
    { 
        string s = x.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"); 
        string 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}"); 
        return Regex.Replace(d, ".", m => "负元空零壹贰叁肆伍陆柒捌玖空空空空空空空分角拾佰仟萬億兆京垓秭穰"[m.Value[0] - ‘-‘].ToString()); 
    }

2.C#实现方法

private static String[] Ls_ShZ ={ "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖", "拾" };

private static String[] Ls_DW_Zh ={ "元", "拾", "佰", "仟", "万", "拾", "佰", "仟", "亿", "拾", "佰", "仟", "万" };

private static String[] Num_DW ={ "","拾", "佰", "仟", "万", "拾", "佰", "仟", "亿", "拾", "佰", "仟", "万" };

private static String[] Ls_DW_X ={ "角", "分" };

/// <summary>

/// 金额小写转中文大写。

/// 整数支持到万亿;小数部分支持到分(超过两位将进行Banker舍入法处理)

/// </summary>

/// <param name="Num">需要转换的双精度浮点数</param>

/// <returns>转换后的字符串</returns>

public static String NumGetStr(Double Num)

{

    Boolean iXSh_bool = false;//是否含有小数,默认没有(0则视为没有)

    Boolean iZhSh_bool = true;//是否含有整数,默认有(0则视为没有)

    string NumStr;//整个数字字符串

    string NumStr_Zh;//整数部分

    string NumSr_X = "";//小数部分

    string NumStr_DQ;//当前的数字字符

    string NumStr_R = "";//返回的字符串

    Num = Math.Round(Num, 2);//四舍五入取两位

    //各种非正常情况处理

    if (Num < 0)

        return "不转换欠条";

    if (Num > 9999999999999.99)

        return "很难想象谁会有这么多钱!";

    if (Num == 0)

        return Ls_ShZ[0];

    //判断是否有整数

    if (Num < 1.00)

        iZhSh_bool = false;

    NumStr = Num.ToString();

    NumStr_Zh = NumStr;//默认只有整数部分

    if (NumStr_Zh.Contains("."))

    {//分开整数与小数处理

        NumStr_Zh = NumStr.Substring(0, NumStr.IndexOf("."));

        NumSr_X = NumStr.Substring((NumStr.IndexOf(".") + 1), (NumStr.Length - NumStr.IndexOf(".") - 1));

        iXSh_bool = true;

    }

    if (NumSr_X == "" || int.Parse(NumSr_X) <= 0)

    {//判断是否含有小数部分

        iXSh_bool = false;

    }

    if (iZhSh_bool)

    {//整数部分处理

        NumStr_Zh = Reversion_Str(NumStr_Zh);//反转字符串

        for (int a = 0; a < NumStr_Zh.Length; a++)

        {//整数部分转换

            NumStr_DQ = NumStr_Zh.Substring(a, 1);

            if (int.Parse(NumStr_DQ) != 0)

                NumStr_R = Ls_ShZ[int.Parse(NumStr_DQ)] + Ls_DW_Zh[a] + NumStr_R;

            else if (a == 0 || a == 4 || a == 8)

            {

                if (NumStr_Zh.Length > 8 && a == 4)

                    continue;

                NumStr_R = Ls_DW_Zh[a] + NumStr_R;

            }

            else if (int.Parse(NumStr_Zh.Substring(a - 1, 1)) != 0)

                NumStr_R = Ls_ShZ[int.Parse(NumStr_DQ)] + NumStr_R;

        }

        if (!iXSh_bool)

            return NumStr_R + "整";

        //NumStr_R += "零";

    }

    for (int b = 0; b < NumSr_X.Length; b++)

    {//小数部分转换

        NumStr_DQ = NumSr_X.Substring(b, 1);

        if (int.Parse(NumStr_DQ) != 0)

            NumStr_R += Ls_ShZ[int.Parse(NumStr_DQ)] + Ls_DW_X[b];

        else if (b != 1 && iZhSh_bool)

            NumStr_R += Ls_ShZ[int.Parse(NumStr_DQ)];

    }

    return NumStr_R;

}

时间: 2024-10-05 04:58:31

数字转大写的相关文章

王小胖之数字转大写

使用场景:一般在书写正规金额的时候都要求填写大写数字. 实现功能:数字转大写功能主要实现:输入小写阿拉伯数字,转换成大写 数据实例:输入,12345678.90   输出,人民币:壹仟贰佰叁拾肆万伍仟陆佰柒拾捌元玖角 功能实现: Html代码 <div class="input-group"> <input name="kw" type="text" class="form-control" placehol

小写数字转大写

--小写数字转大写,只是单纯的将数字转换为大写了,还要加单位 create or replace function chinese(number1 number) return varchar2 is Result varchar2(30):=' '; v_chinese varchar2(25):='零壹贰叁肆伍陆柒捌玖'; v_char varchar2(10); begin for i in 1..length(number1) loop select substr(v_chinese,s

将金额数字转换为大写汉字的js函数

1 //将金额数字转换为大写汉字的函数 2 function convertCurrency(money) { 3 //汉字的数字 4 var cnNums = new Array('零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖'); 5 //基本单位 6 var cnIntRadice = new Array('', '拾', '佰', '仟'); 7 //对应整数部分扩展单位 8 var cnIntUnits = new Array('', '

c# 财务报表数字转大写的方法

/// <summary>/// 数字转大写/// </summary>/// <param name="Num">数字</param>/// <returns></returns> public static string CmycurD(decimal num) { string str1 = "零壹贰叁肆伍陆柒捌玖"; //0-9所对应的汉字 string str2 = "万仟佰

验证数字,大写字母,小写字母,特殊字符四选三组成的密码强度,且长度在8到30个数之间

验证数字,大写字母,小写字母,特殊字符四选三组成的密码强度,且长度在8到30个数之间 表达式: ^(?![a-zA-Z]+$)(?![A-Z0-9]+$)(?![A-Z\[email protected]#$%^&*`~()-+=]+$)(?![a-z0-9]+$)(?![a-z\[email protected]#$%^&*`~()-+=]+$)(?![0-9\[email protected]#$%^&*`~()-+=]+$)[a-zA-Z0-9\[email protecte

Java中金额数字转换为大写数字

注:该代码来自于别人,我引入进来并修改了里面的几个bug.现在写进我的博客里,以便于日后查看,和为其它博友们提供方便 修改bug地方:1.金额为0时,不加整.以前是零元整,现在是零元    2.修改"分", "角", "元","万", "亿","兆"位不会出现零 package com.zbx.bs.common.util;import java.math.BigDecimal; /**

PHP 数字转大写

<?php header("content-type:text/html;charset=utf-8"); function numToRmb($num){ $rmbNum = ['零','壹','贰','叁','肆','伍','陆','柒','捌','玖']; $rmbUnit = ['分','角','元','拾','佰','仟','万','拾','佰','仟','亿','拾','佰','仟','万','拾','佰','仟']; //数字预处理 if($num == '' ||

如何将人民币数字转为大写

废话不说,直接上代码,实现传入数字输出人民币大写 let num="5556.4" console.log(numTocoggle(num)) function numTocoggle(num){ var regexp=/^\d+(([.]{1}(\d{0,2}))+){0,1}$/ if(regexp.test(num)){ /* 壹佰贰拾叁亿 伍仟陆佰捌拾捌万 捌仟伍佰伍拾伍元 伍角叁分*/ let digital=["零","壹",&quo

Delphi 实现数字转大写

从网上找的一段代码 /// <summary> /// 小写转大写 /// </summary> /// <param name="mmje"></param> /// <returns></returns> function MoneyConvert(mmje: real): string; const s1: string = '零壹贰叁肆伍陆柒捌玖'; s2: string = '分角元拾佰仟万拾佰仟亿拾佰仟