使用C#实现阿拉伯数字到大写中文的转换-第二种方法

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

这是类的源码
using System;

namespace ConsoleApp
{
/// <summary>
/// 本类实现阿拉伯数字到大写中文的转换
/// 该类没有对非法数字进行判别
/// 请调用NumToChn方法
/// </summary>
public class NumFormat
{
  public NumFormat()
  {
   //
   // TODO: 在此处添加构造函数逻辑
   //
  }
 
  // 转换数字
  private char ToNum(char x)
  {
   string strChnNames="零一二三四五六七八九";
   string strNumNames="0123456789";
   return strChnNames[strNumNames.IndexOf(x)];
  }
 
  // 转换万以下整数
  private string ChangeInt(string x)
  {
   string[] strArrayLevelNames=new string[4] {"","十","百","千"};
   string ret = "";
   int i;
   for (i=x.Length-1;i>=0;i--)
    if (x[i] == '0')
     ret = ToNum(x[i]) + ret;
    else
     ret = ToNum(x[i]) + strArrayLevelNames[x.Length-1-i] + ret;
   while ((i=ret.IndexOf("零零"))!=-1)
    ret=ret.Remove(i, 1);
   if (ret[ret.Length-1]=='零' && ret.Length>1)
    ret=ret.Remove(ret.Length-1,1);
   if (ret.Length>=2 && ret.Substring(0,2)=="一十")
    ret=ret.Remove(0,1);
   return ret;
  }

  // 转换整数
  private string ToInt(string x)
  {
   int len = x.Length;
   string ret,temp;
   if (len<=4)
    ret = ChangeInt(x);
   else if (len<=8)
   {
    ret = ChangeInt(x.Substring(0,len-4)) + "万";
    temp = ChangeInt(x.Substring(len-4,4));
    if (temp.IndexOf("千")==-1 && temp!="")
     ret += "零" + temp;
    else
     ret += temp;
   }
   else
   {
    ret=ChangeInt(x.Substring(0,len-8)) + "亿";
    temp=ChangeInt(x.Substring(len-8,4));
    if (temp.IndexOf("千")==-1 && temp!="")
     ret += "零" + temp;
    else
     ret += temp;
    ret += "万";
    temp = ChangeInt(x.Substring(len-4,4));
    if (temp.IndexOf("千")==-1 && temp!="")
     ret += "零" + temp;
    else
     ret += temp;
   }
   int i;
   if ((i=ret.IndexOf("零万"))!=-1)
    ret = ret.Remove(i+1,1);
   while ((i=ret.IndexOf("零零"))!=-1)
    ret = ret.Remove(i,1);
   if (ret[ret.Length-1]=='零' && ret.Length>1)
    ret = ret.Remove(ret.Length-1,1);
   return ret;
  }

  private string ToDecimal(string x)
  {
   string ret="";
   for (int i=0;i<x.Length;i++)
    ret += ToNum(x[i]);
   return ret;
  }

  public string NumToChn(string x)
  {
   if (x.Length==0)
    return "";
   string ret="";
   if (x[0]=='-')
   {
    ret="负";
    x=x.Remove(0,1);
   }
   if (x[0].ToString()==".")
    x="0"+x;
   if (x[x.Length-1].ToString()==".")
    x=x.Remove(x.Length-1,1);
   if (x.IndexOf(".")>-1)
    ret += ToInt(x.Substring(0,x.IndexOf(".")))+"点"+ToDecimal(x.Substring(x.IndexOf(".")+1));
   else
    ret += ToInt(x);
   return ret;
  }
}
}

这是测试工程
using System;

namespace ConsoleApp
{
class MainClass
{
  static void Main(string[] args)
  {
   /*
   System.Console.WriteLine("Hello, The World!");
  
   System.Console.WriteLine("My Love!");

   ClassTest ct = new ClassTest();
            System.Console.WriteLine(ct.Get_Str());
   */
  
   /*
   // 重载运算符
            MyVector v1 = new MyVector(5, 12);
   MyVector v2 = new MyVector(4, 3);
   MyVector v3 = new MyVector();
   v3 = v1 + v2;
   System.Console.WriteLine("{0}测试一下", v3.Length);
   */

   // 转换成大写数字
   NumFormat nf = new NumFormat();
   string x;
   while (true)
   {
    Console.Write("X=");
    x = Console.ReadLine();
    if (x == "") break;
    Console.WriteLine("{0}={1}", x, nf.NumToChn(x));
   }
  }
}
}


 

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

相关推荐

使用C#实现阿拉伯数字到大写中文的转换

使用C#实现阿拉伯数字到大写中文的转换

C# 实现数字转汉字大写

C# 实现数字转汉字大写

cimusanhuo的博客 2825

快充协议全兼容!HUSB390对比测试:iPhone/小米/华为哪个充电最快?

本文深入评测了HUSB390快充协议芯片的全兼容性能,展示了其在iPhone、小米和华为设备上的极速充电表现。通过智能功率分配算法和多协议并行处理引擎,HUSB390实现了高效的动态调压和温度控制,显著提升多设备充电效率。特别适合需要同时为不同品牌设备快充的用户。

dd012的博客 1万+

C#将数字转换为大写

/// 转换数字金额主函数(包括小数)     ///      /// 数字字符串     /// 转换成中文大写后的字符串或者出错信息提示字符串     public string ConvertSum(string str)     {         if (!IsPositveDecimal(str))             return "输入的不是正数字!";  

我的代码笔记 2585

树莓派5搭建ROS1开发环境:从系统安装到环境变量配置

本文详细指导如何在树莓派5上搭建ROS1开发环境。针对树莓派OS非标准安装路径导致的常见CMake报错问题,提供了从系统烧录、一键安装ROS到关键环境变量配置的完整解决方案,确保工作空间能成功编译,助力机器人项目开发。

weixin_29159127的博客 384

告别手动输入!用Access批量导入307种土壤数据到SWAT模型(附完整MDB操作流程)

本文详细介绍了如何利用Microsoft Access批量导入307种土壤数据到SWAT模型,显著提升数据录入效率。通过解析usersoil表结构、提供Access操作指南和VBA自动化脚本,帮助环境工程师避免手动输入错误,实现高效数据管理。文章还包含性能优化技巧和常见错误解决方案,是SWAT模型用户的实用指南。

weixin_28366053的博客 324

C# 数字转中文大写

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

hllyzms的博客 1958

基于Stigmergy的团队LLM wiki协作机制与FastAPI工程实践

大语言模型驱动的知识管理正在改变个人笔记与团队文档的维护方式,但当多人共同维护一个维基时,如何避免版本覆盖、上下文丢失和幻觉污染成为核心挑战。Stigmergy这一源自生物学的协作机制提供了新思路:通过共享环境中的痕迹(如评论、标记、修订历史)实现异步协作,无需实时沟通或中心协调者。本文将原理落地为可工程化的系统,设计Page、Revision、Trace三大实体,并结合向量索引与LLM审查流程,最终用FastAPI与SQLite搭建一个最小可运行原型。从白蚁筑巢到团队知识库,Stigmergy让每个参与者

weixin_34174322的博客 363

c#阿拉伯数字转化为汉字一、二、二十一、一百零一

开发中遇到需要将阿拉伯数字转化成汉字一、二、三的问题,网上找了些,没找到符合自己需求, 总是会出现各种问题,于是自己写了一个通用的方法,基本满足大众需求(感觉比网上的一些好多了·-·)完整代码及测试数据在下面,大家有需要的完全可以直接拿去用。

qq_41393222的博客 1850

从原理到代码:拆解UniFormer中动态位置嵌入(DPE)的3D卷积实现

本文深入解析了UniFormer模型中动态位置嵌入(DPE)模块的3D卷积实现原理与代码。DPE通过一个轻量的3D深度可分离卷积,替代传统静态位置编码,使模型能自动学习视频数据的时空位置关系。文章对比了其与Swin Transformer相对位置偏置的优劣,并提供了PyTorch实现代码与高级定制方案,为视频理解任务提供了高效灵活的动态位置编码解决方案。

weixin_29207149的博客 308

外部PLC触发VisionMaster多流程运行

上一讲,介绍了海康VisionMaster与西门子PLC1200进行S7通信。在前一讲的基础上,讲解如何通过PLC触发,实现VisionMaster的多流程运行。

haier123888的博客 4651

C# 数字转换成汉字大写 数值转换成汉字大写

1.数字转换成汉字大写 public string NumToChinese(string x) { //数字转换为中文后的数组 //转载请注明来自 http://www.shang11.com string[] P_array_num = new string[] { "零", "壹", "贰", "叁", ...

weixin_30414245的博客 758

C#联合Halcon机器视觉框架源码

本软件参考EV开发,共用模块,基于WPF+Halcon,是非常不错的学习框架,需要什么功能可以自己添加,插件式开发非常方便。

Z's Palace 4817

C#实现的【阿拉伯数字转换成中文大写金额】代码(原创)

以下C#代码实现了将阿拉伯数字转换成中文大写金额的功能,并Visual Studio.NET 2003 下调试基本通过(未经严格测试,希望各位发现错误后与作者联系fanz2000@sohu.com,或直接在csdn上回帖告知)。代码的主调函数为ConvertSum,它的参数是string类型的数字字符串。在ASP.NET中调用方式如下:Label1.Text=ConvertSum("数字字符串

fanz2000的专栏 6321

携程滑块、点选验证码登录识别逆向

本文分析了携程登录系统的风控机制,主要包含三种验证场景:无验证码、滑块验证码和二次图标点选验证码。通过跟踪risk_inspect风控接口,发现验证流程采用标准AES加密,需提交设备指纹等加密信息。当触发验证码时,需额外提交包含轨迹坐标的verify_msg参数及token/rid参数。最终通过风控检测后,需使用一致的指纹参数和验证token完成加密登录。文章强调所有分析仅用于学习,代码实现需确保符合法律规范。

码王吴彦祖的博客 1097

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

如何把阿拉伯数字转换为中文大写?

    之前在优快云论坛里,看有人Show了一些把中文大写转换成阿拉伯数字的程序代码,自己也用Java语言实现了程序设计,基本上能够实现十万亿以内的任何数字的转换。之前也帖出自己的实现代码。    但我个人认为,把大写转换为数字实际上是没有多少意义的。因为很少有把大写转为数字的,大多数都是把数字转换为大写。何况把大写转为数字并不是一件很容易的事情,因为汉语大写有很多种说法,比如说:101

★★★★★ 1万+

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

C#实现的【阿拉伯数字转换成中文大写金额】代码

 以下C#代码实现了将阿拉伯数字转换成中文大写金额的功能,并Visual Studio.NET 2003 下调试基本通过(未经严格测试,希望各位发现错误后与作者联系fanz2000@sohu.com,或直接在csdn上回帖告知)。代码的主调函数为ConvertSum,它的参数是string类型的数字字符串。在ASP.NET中调用方式如下:Label1.Text=ConvertSum("数字

1582

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

C#写的将阿拉伯数字转换成中文大写金额代码

C#写的将阿拉伯数字转换成中文大写金额代码  

golden的专栏 2297

c语言将阿拉伯数字变为大写,使用C#实现阿拉伯数字到大写中文的转换

先记下来,以备后用!/// /// 金额转为大写金额/// public class MoneyConvertChinese{/// /// 金额转为大写金额/// /// /// public string MoneyToChinese(string LowerMoney){string functionReturnValue = null;bool IsNegative = false; //...

weixin_29796903的博客 1778

C# 实现阿拉伯数字转换为中文数字3种实现思路(递归拼接、循环拼接、if拼接)

1、数字1-9转换为中文数字 //数字1-9转换为中文数字 public string OneBitNumberToChinese(int num){ string result = ""; switch(num){ case 1:result = "一";break; case 2:result = "二";break; case 3:result = "三";break; case 4:result = "四";break; case 5:resul.

旭东怪的博客 6241

java阿拉伯转大写_JAVA编写将阿拉伯数字转换成中文大写不要...

2016-09-01 00:35黄益江 客户经理把阿拉伯数字转为中文可以,你在“设置单元格格式”“数字”“特殊”“中文大写数字”,就可以了袱甫递晃郛浩店彤锭廓,只要你输入数字,他会自动变为中文的大写2016-09-01 00:32黄盛洁 客户经理java实现金额转换,阿拉伯数字的金额转换成中国传统的形式import java.util.HashMap;import java.text.Number...

weixin_35891744的博客 1631

阿拉伯数字转换成中文大写金额

C#实现的【阿拉伯数字转换成中文大写金额】代码代码的主调函数为ConvertSum,它的参数是string类型的数字字符串。在ASP.NET中调用方式如下:Label1.Text=ConvertSum("数字字符串");其代码如下://作者:fanz2000//Email:fanz2000@sohu.com/// /// 转换数字金额主函数(包括小数)/// /// 数

tq06f2r的专栏 802

C#阿拉伯数字转换为中文大写

  class ConvertNumber    {         #region 大写、单位数组定义         private static string[] cstr ={"零","壹","贰","叁","肆","伍","陆","柒","捌","玖" };        private static string[] wstr ={ "", "", "拾",

niuhao19830827的专栏 811
上一篇: 一个将阿拉伯数字转换成中文大写的好算法(C#)
下一篇: 网上搜索电子书的办法
YICK
博客等级 码龄22年 4粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值