/// <summary>
/// 转换为人民币大写金额形式
/// </summary>
/// <param name="Money">金额</param>
/// <returns>返回大写形式</returns>
public static string NumberToChineseMoney(this object number)
{
decimal numberMoney = 0;
try
{
numberMoney = Convert.ToDecimal(number);
}
catch
{
return "非数字形式!";
}
//0-9数字所对应的汉字
const string numericChinese = "零壹贰叁肆伍陆柒捌玖";
//数字单位所对应的汉字
string unitChinese = "万仟佰拾亿仟佰拾万仟佰拾元角分";
//将Money取绝对值并四舍五入取2位小数
numberMoney = Math.Round(Math.Abs(numberMoney), 2);
//数字的字符串形式
string strNumeric = ((long)(numberMoney * 100)).ToString();
//人民币大写金额形式
string strCmycurD = "";
//最高单位
int maxUnit = strNumeric.Length;
if (maxUnit > 15) { return "溢出"; }
//取出对应位数的unitChinese的值。如:200.55,maxUnit为5所以unitChinese=佰拾元角分
unitChinese = unitChinese.Substring(15 - maxUnit);
//数字单位的汉字转换
string unitConvert = "";
//用来计算连续的零值是几个
int nzero = 0;
//循环取出每一位需要转换的值
for (int i = 0; i < maxUnit; i++)
{
//数字的汉字转换
string numericConvert;
//取出需转换的某一位的值
string strConvertValue = strNumeric.Substring(i, 1);
//转换为数字
int convertValue = Convert.ToInt32(strConvertValue);
if (i != (maxUnit - 3) && i != (maxUnit - 7) && i != (maxUnit - 11) && i != (maxUnit - 15))
{
//当所取位数不为元、万、亿、万亿上的数字时
if (strConvertValue == "0")
{
numericConvert = "";
unitConvert = "";
nzero = nzero + 1;
}
else
{
if (strConvertValue != "0" && nzero != 0)
{
numericConvert = "零" + numericChinese.Substring(convertValue * 1, 1);
unitConvert = unitChinese.Substring(i, 1);
nzero = 0;
}
else
{
numericConvert = numericChinese.Substring(convertValue * 1, 1);
unitConvert = unitChinese.Substring(i, 1);
nzero = 0;
}
}
}
else
{
//该位是万亿,亿,万,元位等关键位
if (strConvertValue != "0" && nzero != 0)
{
numericConvert = "零" + numericChinese.Substring(convertValue * 1, 1);
unitConvert = unitChinese.Substring(i, 1);
nzero = 0;
}
else
{
if (strConvertValue != "0" && nzero == 0)
{
numericConvert = numericChinese.Substring(convertValue * 1, 1);
unitConvert = unitChinese.Substring(i, 1);
nzero = 0;
}
else
{
if (strConvertValue == "0" && nzero >= 3)
{
numericConvert = "";
unitConvert = "";
nzero = nzero + 1;
}
else
{
if (maxUnit >= 11)
{
numericConvert = "";
nzero = nzero + 1;
}
else
{
numericConvert = "";
unitConvert = unitChinese.Substring(i, 1);
nzero = nzero + 1;
}
}
}
}
}
if (i == (maxUnit - 11) || i == (maxUnit - 3))
{
//如果该位是亿位或元位,则必须写上
unitConvert = unitChinese.Substring(i, 1);
}
strCmycurD = strCmycurD + numericConvert + unitConvert; if (i == maxUnit - 1 && strConvertValue == "0")
{
//最后一位(分)为0时,加上“整”
strCmycurD = strCmycurD + '整';
}
}
if (numberMoney == 0)
{
strCmycurD = "零元整";
}
return strCmycurD;
}

C# 数字(阿拉伯数字)金额转汉字金额 人民币操作类 :转换人民币大小金额。的更多相关文章

  1. 【转载】C#工具类:人民币金额转换为中文大写

    在涉及到金融业务这一块的系统设计中,时常能够遇到的情况是需要将阿拉伯数字的人民币金额自动转换为中文的大写金额.现在互联网上也有很多网站提供此类服务,只要你输入人民币的阿拉伯数字金额,输入后自动给你转换 ...

  2. RMB转换人民币大小金额

    MXS&Vincene  ─╄OvЁ  &0000015 ─╄OvЁ  MXS&Vincene MXS&Vincene  ─╄OvЁ:今天很残酷,明天更残酷,后天很美好 ...

  3. ASP.NET转换人民币大小金额

    public class DecimalToRMB    {        /// <summary>         /// 转换人民币大小金额         /// </sum ...

  4. C#随机生成不重复邀请码&创建登录Token&转换人民币大小金额

    /// <summary> /// 创建登陆Token /// </summary> /// <param name="length">< ...

  5. javascript 中文数字阿拉伯数字转换类 Nzh

    之前工作中碰到了数字转中文的情景,网上找的现成方法或多或少不合我的口味,最后还是自已写了一个. 现在整理了一下,补充了繁体,自定义字符,以及反函数(中文数字转阿拉伯数字) 现在发布出来,希望能合大家的 ...

  6. 限制HTML的input只能输入数字、英文、汉字...

    限制HTML的input只能输入数字.英文.汉字... 关键词:正则表达式, JavaScript, HTML, input 常用HTML正则表达式1.只能输入数字和英文的:<input onk ...

  7. Android editview 设置只能输入数字、字母和汉字

    Android editview 设置只能输入数字.字母和汉字 当处理密码.昵称等特殊情况的时候,往往需要对输入内容加以限制.对于单纯的一种输入法限制可以对键盘和editview熟悉进行控制,而对于多 ...

  8. ORACLE数字转换人民币大写

    ORACLE 数字转换人民币大写     示例.   数字                    :183066999230.68 人民币大写        :壹仟捌佰参拾亿陆仟陆佰玖拾玖万玖仟贰佰参 ...

  9. 字母数字、字母、汉字验证码 (java)

    原文:http://blog.csdn.net/qh_java/article/details/49854477 一.字母数字,字母,汉字验证码的生成代码 1.字母数字验证码: package com ...

  10. SQL中的数字、字母和汉字

    知识点001 当变量的数据类型为VARCHAR时,变量赋值后,变量中的字符所占字节数,数字和字母是1个bytes,汉字是2个bytes; 当变量的数据类型为NVARCHAR时,变量赋值后,变量中的字符 ...

随机推荐

  1. tesseract引擎RVV代码学习笔记

      Tesseract 是一个开源的 OCR(Optical Character Recognition,光学字符识别)引擎,可将图像中的文本转换为机器可读的文本格式.由于组内曾经有同事为这个项目贡献 ...

  2. 2024睿抗机器人开发者大赛CAIP-编程技能赛-本科组(省赛) RC-u5 工作安排详解

    本文参考 https://www.cnblogs.com/Kescholar/p/18306136 这一题可能对高手来说就能轻而易举的看出是个01背包,但是对于我这种小白还是要经过详细的分析才可以理解 ...

  3. Echarts服务端渲染以及客户端懒加载实现方案

    为了提升首屏的加载速度,考虑先用服务端渲染快速输出首屏图表,然后等待 echarts.js 加载完后,通过注水操作(Hydration),重新在客户端渲染同样的图表 tips:在客户端渲染的时候,应开 ...

  4. Java中的常见排查问题命令

    一.线上服务排查,从三个方面负载.cpu.内存 这三个方面着手 1:top 命令是比较常见的,也是最常用的,因为他显示的信息也是最全的 2:针对负载的问题,我们怎么能确定负载当前是高还是低? 一般来说 ...

  5. eolinker同一个自动化用例内执行不同端接口遇到的问题(主要是两套host环境共存的问题)解决方法

    特别注意:需要使用全局变量或者预处理前务必阅读本链接https://www.cnblogs.com/becks/p/13713278.html eolinker内同一套环境只能配置一个host地址,如 ...

  6. symfony框架安全组件(security)防火墙配置

    最近改了下之前用symfony做的项目,然后,突然发现防火墙失效了,简单说就是再未登录状态下居然可以访问配置了ROLE_USER.ROLE_ADMIN这些权限的路由,symfony框架很强大,但是文档 ...

  7. 编译nwjs/node-webkit可用的sqlite3简单靠谱的解决方案/在nwjs里使用sqlite

    大胸弟,如果你和我一样把官方给的方法和网上的文章都试过了还是编译不过,但又必须在nwjs里使用sqlite数据库,那么请继续往下看. 我的解决方法就是: 1.不编译 来吧,拥抱html5吧,具体来说就 ...

  8. EFCore Study(四)——Select的应用及不走联表查外键字段的操作

    一.EFCore里Select的应用: 1)避免查询select *,可指定查询合适的字段 var comment = context.artitles.Select(c =>new { Id ...

  9. 解决NET Core发布iis项目覆盖原有的项目时"另一个程序正在使用此文件,进程无法访问"

    解决NET Core发布iis项目覆盖原有的项目时"另一个程序正在使用此文件,进程无法访问" 现在net core运用的多了,一系列的问题接踵而来,更新项目发布到iis时就有一个坑 ...

  10. C#多线程编程精要:从用户线程到线程池的效能进化论

    1. 引言 在多线程编程中,线程是实现并发执行的核心.C#作为一种功能强大的现代编程语言,提供了丰富的线程管理机制,以支持开发者应对各种并发场景.不同的线程类型在功能.生命周期和适用场景上各有侧重.理 ...