c# 数字转大写

C#数字金额转人民币大写金额的实现 要过年了,朋友圈里充斥着各种年的味道,还有一种特别的朋友圈今年格外显眼,好像一股气流冲击着我的小心脏,2022真的是太难了。这里,专门为各位老板写了一套数字金额转人民币大写金额的实现方法,希望大家都能过个好年,希望来年大家都不再为了那二两碎银而心烦。 阅读详情
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;

namespace ZZLH.Utils
{
    /// <summary>
    /// 人民币大写转换工具类
    /// </summary>
    public class RMBUtil
    {
        /// <summary>
        /// 转换为大写数字
        /// <para>1、支持的最大数字:999999999999.99(玖仟玖佰玖拾玖亿玖仟玖佰玖拾玖万玖仟玖佰玖拾玖元玖角玖分)</para>
        /// <para>2、小数点后最多支持两位</para>
        /// </summary>
        /// <param name="num">数值</param>
        /// <returns></returns>
        public static string Convert(decimal num)
        {
            // 解决327000000转换后缺少单位万的问题
            return new RMBUtil().ConvertToChinese(num);
        }

        #region 实例
        /// <summary>
        /// 要转换的数字
        /// </summary>
        private decimal j;

        /// <summary>
        /// 
        /// </summary>
        private string[] NumChineseCharacter = new string[] { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" };

        /// <summary>
        /// 判断输入的数字是否大于double类型
        /// </summary>
        private bool IsNumber
        {
            get
            {
                if (j > decimal.MaxValue || j <= 0)
                    return false;
                else
                    return true;
            }
        }

        /// <summary>
        /// 数字转换成大写汉字主函数
        /// </summary>
        /// <returns>返回转换后的大写汉字</returns>
        public string ConvertToChinese(decimal m)
        {
            this.j = m;
            string bb = "";
            if (IsNumber)
            {
                string str = j.ToString();
                string[] Num = str.Split('.');
                if (Num.Length == 1)
                {
                    bb = NumberString(Num[0]) + "元整";
                    bb = bb.Replace("零零", "零");
                }
                else
                {
                    bb = NumberString(Num[0]) + "元";
                    bb += FloatString(Num[1]);
                    bb = bb.Replace("零零", "零");
                }
            }
            else
            {
                throw new FormatException("你输入的数字格式不正确或不是数字!");
            }
            return bb;
        }
        /// <summary>
        /// 小数位转换只支持两位的小数
        /// </summary>
        /// <param name="Num">转换的小数</param>
        /// <returns>小数转换成汉字</returns>
        private string FloatString(string Num)
        {
            string cc = "";
            if (Num.Length > 2)
            {
                throw new FormatException("小数位数过多.");
            }
            else
            {
                string bb = ConvertString(Num);
                int len = bb.IndexOf("零");
                if (len != 0)
                {
                    bb = bb.Replace("零", "");
                    if (bb.Length == 1)
                    {
                        cc = bb.Substring(0, 1) + "角";
                    }
                    else
                    {
                        cc = bb.Substring(0, 1) + "角";
                        cc += bb.Substring(1, 1) + "分";
                    }
                }
                else
                    cc = bb + "分";
            }
            return cc;
        }
        /// <summary>
        /// 判断数字位数以进行拆分转换
        /// </summary>
        /// <param name="Num">要进行拆分的数字</param>
        /// <returns>转换成的汉字</returns>
        private string NumberString(string Num)
        {
            string bb = "";
            if (Num.Length <= 4)
            {
                bb = Convert4(Num);
            }
            else if (Num.Length > 4 && Num.Length <= 8)
            {
                bb = Convert4(Num.Substring(0, Num.Length - 4)) + "万";
                bb += Convert4(Num.Substring(Num.Length - 4, 4));
            }
            else if (Num.Length > 8 && Num.Length <= 12)
            {
                bb = Convert4(Num.Substring(0, Num.Length - 8)) + "亿";
                if (Convert4(Num.Substring(Num.Length - 8, 4)) == "")
                    if (Convert4(Num.Substring(Num.Length - 4, 4)) != "")
                        bb += "零";
                    else
                        bb += "";
                else
                    bb += Convert4(Num.Substring(Num.Length - 8, 4)) + "万";
                bb += Convert4(Num.Substring(Num.Length - 4, 4));
            }
            else
            {
                throw new Exception("整数部分最多支持12位");
            }
            return bb;
        }
        /// <summary>
        /// 四位数字的转换
        /// </summary>
        /// <param name="Num">准备转换的四位数字</param>
        /// <returns>转换以后的汉字</returns>
        private string Convert4(string Num)
        {
            string bb = "";
            if (Num.Length == 1)
            {
                bb = ConvertString(Num);
            }
            else if (Num.Length == 2)
            {
                bb = ConvertString(Num);
                bb = Convert2(bb);
            }
            else if (Num.Length == 3)
            {
                bb = ConvertString(Num);
                bb = Convert3(bb);
            }
            else
            {
                bb = ConvertString(Num);
                string cc = "";
                string len = bb.Substring(0, 4);
                if (len != "零零零零")
                {
                    len = bb.Substring(0, 3);
                    if (len != "零零零")
                    {
                        bb = bb.Replace("零零零", "");
                        if (bb.Length == 1)
                        {
                            bb = bb.Substring(0, 1) + "仟";
                        }
                        else
                        {
                            if (bb.Substring(0, 1) != "零" && bb.Substring(0, 2) != "零")
                                cc = bb.Substring(0, 1) + "仟";
                            else
                                cc = bb.Substring(0, 1);
                            bb = cc + Convert3(bb.Substring(1, 3));
                        }
                    }
                    else
                    {
                        bb = bb.Replace("零零零", "零");
                    }
                }
                else
                {
                    bb = bb.Replace("零零零零", "");
                }
            }
            return bb;
        }
        /// <summary>
        /// 将数字转换成汉字
        /// </summary>
        /// <param name="Num">需要转换的数字</param>
        /// <returns>转换后的汉字</returns>
        private string ConvertString(string Num)
        {
            string bb = "";
            for (int i = 0; i < Num.Length; i++)
            {
                bb += NumChineseCharacter[int.Parse(Num.Substring(i, 1))];
            }
            return bb;
        }
        /// <summary>
        /// 两位数字的转换
        /// </summary>
        /// <param name="Num">两位数字</param>
        /// <returns>转换后的汉字</returns>
        private string Convert2(string Num)
        {
            string bb = ""; string cc = "";
            string len = Num.Substring(0, 1);
            if (len != "零")
            {
                bb = Num.Replace("零", "");
                if (bb.Length == 1)
                {
                    cc = bb.Substring(0, 1) + "拾";
                }
                else
                {
                    cc = bb.Substring(0, 1) + "拾";
                    cc += bb.Substring(1, 1);
                }
            }
            else
                cc = Num;
            return cc;
        }
        /// <summary>
        /// 三位数字的转换
        /// </summary>
        /// <param name="Num">三位数字</param>
        /// <returns>转换后的汉字</returns>
        private string Convert3(string Num)
        {
            string bb = ""; string cc = "";
            string len = Num.Substring(0, 2);
            if (len != "零零")
            {
                bb = Num.Replace("零零", "");
                if (bb.Length == 1)
                {
                    bb = bb.Substring(0, 1) + "佰";
                }
                else
                {
                    if (bb.Substring(0, 1) != "零")
                        cc = bb.Substring(0, 1) + "佰";
                    else
                        cc = bb.Substring(0, 1);
                    bb = cc + Convert2(bb.Substring(1, 2));
                }
            }
            else
            {
                bb = Num.Replace("零零", "零");
            }
            return bb;
        } 
        #endregion
    }
}
static void Main(string[] args)
{
    Console.WriteLine(ZZLH.Utils.RMBUtil.Convert(1m));
    Console.WriteLine(ZZLH.Utils.RMBUtil.Convert(12m));
    Console.WriteLine(ZZLH.Utils.RMBUtil.Convert(123.3m));
    Console.WriteLine(ZZLH.Utils.RMBUtil.Convert(123.32m));
    Console.WriteLine(ZZLH.Utils.RMBUtil.Convert(1234));
    Console.WriteLine(ZZLH.Utils.RMBUtil.Convert(12345));
    Console.WriteLine(ZZLH.Utils.RMBUtil.Convert(123456));
    Console.WriteLine(ZZLH.Utils.RMBUtil.Convert(1234567));
    Console.WriteLine(ZZLH.Utils.RMBUtil.Convert(12345678));
    Console.WriteLine(ZZLH.Utils.RMBUtil.Convert(123456789));
    Console.WriteLine(ZZLH.Utils.RMBUtil.Convert(1234567890));
    Console.WriteLine(ZZLH.Utils.RMBUtil.Convert(12345678901));
    Console.WriteLine(ZZLH.Utils.RMBUtil.Convert(123456789012));
    Console.WriteLine(ZZLH.Utils.RMBUtil.Convert(999999999999.99m));
}

C#金额转大写的方法 最近搞的项目里面有个财务模块,需要把数字金额转为大写显示,网上搜了一下要么代码太繁琐要么不符合书写习惯(会出现零佰零仟,整数没有结尾之类的问题),于是琢磨了一下自己写了个方法。原理很简单,就是循环替换数字,添加单位,然后再来一个循环排除例外情况。 代码如下: public string NumtoChinese(decimal s) { 阅读详情

相关推荐

c# 数字转大写中文

using System; using System.Collections.Generic; namespace WaiShiBan { public class RBM { public static string[] ZhongWen = new string[] { “零”,”壹”, “贰”, “叁”, “肆”, “伍”, “陆”, “柒”, “捌

yoyoos的博客 1133

C# 实现数字转汉字大写

C# 实现数字转汉字大写

cimusanhuo的博客 2826

C#数字金额转中文大写金额:代码解析

在金融相关的业务场景中,我们常常需要将数字金额转换为中文大写金额,以避免金额被篡改,增加金额的准确性和安全性。本文将深入解析一段 C# 代码,这段代码通过巧妙的设计,实现了将数字金额转换为中文大写金额的功能,让我们一起来揭开它的神秘面纱。

Amon的专栏 828

C# 数字转中文大写

代码】C#数字转中文大写。

hllyzms的博客 1961

C#实现数字转中文大写功能教程

在C#中,Dictionary是一个集合类,用于存储键值对(key-value pairs)。每个键值对都被称作一个元素,而且每个键都是唯一的。字典允许您使用键来快速检索对应的值。它是泛型(Generic)集合,可以指定存储的数据类型,使得类型安全和效率得以兼顾。字典的常用操作包括添加、删除和查找元素。添加元素使用Add()方法或索引器。删除元素可以使用Remove()方法。查找元素同样可以使用索引器,如果键不存在,则返回默认值。下面是基本操作的代码示例:// 创建并初始化字典。

weixin_36078669的博客 1519

C#数字转大写:中文数字转换重铸优化版(DLL类库)

上数计数规则在金融领域拥有重要的应用价值,能够提升财务报表的准确性和可靠性。通过上述内容的介绍,我们了解了上数计数规则的数学原理、在金融领域的具体应用以及软件实现方法。掌握并应用这些规则,能够帮助开发出更加安全和规范的财务软件。

weixin_36064575的博客 936

C#数字转大写人民币

private static readonly char[] ChineseNumbers = { '零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖' };private static readonly string[] BigUnits = { "", "万", "亿", "兆" };private static readonly string[] Units = { "", "拾", "佰", "仟" };builder.Insert(0, "零元");

我曾经是个程序员 1328

C#数字到中文大写转换实现

htmltable {th, td {th {pre {简介:在编写财务软件或处理金融数据时,将阿拉伯数字转换为大写中文数字是常见需求。本文将详细介绍如何使用C#语言来实现这一功能,包括理解数字与中文大写数字的对应关系,编写转换逻辑,并通过示例代码展示实现过程。文章还讨论了如何去除重复的零和处理小数部分,提供了完整的类以及ToChinese和方法实现,并建议进行错误处理和代码优化。

weixin_42513870的博客 1286

C#:最少的代码实现人民币数字转大写

最少的代码实现人民币数字转大写

lfq761204的博客 285

新手也能玩转!用Panosim+MATLAB/Simulink搭建你的第一个智能驾驶仿真场景(保姆级图文)

本文为新手提供了使用Panosim和MATLAB/Simulink搭建智能驾驶仿真场景的详细教程。从环境准备、基础场景创建到仿真模型构建,一步步指导用户完成第一个智能驾驶仿真项目,帮助零基础用户快速上手并体验智能驾驶仿真的乐趣。

weixin_29090089的博客 183

Bresenham画圆算法在嵌入式屏幕(如ILI9806G)上的实战:从C代码到单片机显示

本文详细介绍了Bresenham画圆算法在嵌入式屏幕(如ILI9806G)上的高效实现与优化方法。通过整数化改造和针对STM32等微控制器的特殊优化,显著提升了图形显示性能,适用于资源受限的嵌入式系统开发。文章还分享了实心圆与空心圆的实现策略及实战经验。

weixin_33712987的博客 391

C#数字小写转大写

//金额转换为大写     public static string CmycurD(decimal num)     {         string str1 = "零壹贰叁肆伍陆柒捌玖";               //0-9所对应的汉字         string str2 = "万仟佰拾亿仟佰拾万仟佰拾元角分";     //数字位所对应的汉字         string

u012546447的博客 2062

ArcGIS山体坡度、坡向分析

本篇文章主要记录自己在对山体坡向及坡度分析中的一些操作。

Belence_zhao的博客 7412

C# 字符串大写转小写,小写转大写,数字保留,其他除外

又是一道面试题,我只想到两种方式: 第一种:循环字符串,判断每个字符串的类型,再根据类型对该字符进行操作(转大写、转小写、不变或舍弃) static void Main(string[] args) { //大写转小写,小写转大写,数字保留,其他除外 string str = "Aa Bb 123!@#"; //测试字符串 string newStr...

weixin_30621959的博客 583

MacOS上如何修改jupyter book的默认打开地址以及如何复制文件路径

记点笔记,才换新系统小半年,还是不太熟悉,所以记录一下笔记,感觉之后也会用到,希望能帮到你们。主要内容是:修改jupyter的默认地址以及复制文件路径。

魔仙的博客 1978

Tessent Atpg系列 第七章 Running ATPG Patterns -- 如何书写proc文件

本篇文章是记录Tessent scan ATPG系列 本文并非是对userguide的完全翻译,而是自己对userguide的理解,此外,有部分比较深入的内容可能需要后续实验验证。本系列并不对tessent scan做过多描述。 请勿随意转载: 优快云 博主: ciscomonkey一种是在使用tessent scan之后使用ATPG 另一种是使用第三方工具,如snps的DFTC之后使用tessent的ATPG。 这里我们仅仅介绍without tessent scan之后tessent ATPG:对于t

ciscomonkey的博客 7694

小写数字转中文大写或大写金额的C#完整方案

本程序用于将小写数字转换为一般中文大写或中文大写金额, 提供以下功能:1. 允许任意整数或小数, 一般中文大写转换范围在(-10,000,000,000,000,000 ~ 10,000,000,000,000,000)之间, 中文大写金额转换范围在(0,? ~ 10,000,000,000,000,000)之间. 能转换所有系统接纳的输入数字, 如"0", "0.", ".0", "-.0",

黄晶的专栏 3480

基于紫光展锐平台的音频调用到hal层逻辑

基于紫光展锐平台的音频调用到hal层逻辑 1、数据流程图 AudioPolicyService和AudioFlinger的创建: 这两个服务都在audioserver中启动,文件路径: frameworks/av/media/audioserver/main_audioserver.cpp 从AudioFlinger和AudioPolicyService的创建,到output的打开,以及AudioFlinger开始往底层写入数据的具体流程如下图: #mermaid-svg-kjHL4XWwkQXN6NdA

weixin_55053963的博客 1355

数字转中文大写c#

 转中文分三步:1.将数字补充到15位 2.分成四位一组,和最后的小数点三位转换 3.处理其他异常情况public static string ToUpper(decimal d)  {   if (d == 0)    return "零元";      string je = d.ToString("####.00");   if (je.Length > 15)    return ""

Martin的专栏 2657

YOLOv5改进策略|实战应用案例|YOLOv5苹果成熟度检测 ,准确率提升4.6%

苹果作为世界四⼤⽔果之⼀,富含多种维⽣素和矿物质,⼀直深受世界各地消费者的喜爱。据联 合国粮⻝及农业组织统计,全球⽔果产量中,苹果位列第⼆位,仅次于葡萄(贾等⼈,2020 )。然⽽,⼤多数苹果果实都是⼿⼯采摘的,这样的⽣产⽅法效率很低。此外,随着⼈⼝⽼龄化 和农村劳动⼒⼤量涌⼊城市,⽔果种植⾏业的劳动⼒成本也相应上升。所有这些因素都显着影响 着⽔果产品的市场竞争⼒。因此,实时⾼效采收苹果等⽔果,降低采收成本势在必⾏。基于机器 视觉的⽔果采摘机器⼈可以利⽤其信息感知来识别和采摘⽔果。

斌擎科技 2209

Openclaw错误分析与解决方案之:Agent couldn’t generate a response.

Openclaw错误分析与解决方案之:Agent couldn't generate a response. Note: some tool actions may have already been executed — please verify before retrying.

多媒体编程、网络编程、系统编程、网络安全编程、驱动编程 1316

C#数字转大写

using System; namespace ManPowerManage.BussinessRule { /// /// DecimalToUpper 的摘要说明。 /// public class DecimalToUpper { pu

上帝狼 3609

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

C#,数字转人民币大写方法

using System;  namespace Test {     /**////     /// Rmb 的摘要说明。     ///     public class Rmb     {         /**////         /// 转换人民币大小金额         ///         /// 金额         /// 返回大写形式         public

364

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

C#数字转人民币大写

C#实现的数字转人民币大写

一出好剧 2076

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

C#数字转大写代码

public static string[] Unit = { "", "十", "百", "千", "万", "十", "百", "千", "亿", "十", "百", "千", "万" }; public static string[] Case = { "零", "一", "二", "三", "四", "五", "六", "七", "八", "九", "十" };

fan_xiaohu的专栏 977
上一篇: advinst.exe 命令行参数
下一篇: jenkins修改任务工作目录
「已注销」
博客等级 码龄16年 102粉丝 127原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值