C# 数字(阿拉伯数字)金额转汉字金额 人民币操作类 :转换人民币大小金额。
/// <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# 数字(阿拉伯数字)金额转汉字金额 人民币操作类 :转换人民币大小金额。的更多相关文章
- 【转载】C#工具类:人民币金额转换为中文大写
在涉及到金融业务这一块的系统设计中,时常能够遇到的情况是需要将阿拉伯数字的人民币金额自动转换为中文的大写金额.现在互联网上也有很多网站提供此类服务,只要你输入人民币的阿拉伯数字金额,输入后自动给你转换 ...
- RMB转换人民币大小金额
MXS&Vincene ─╄OvЁ &0000015 ─╄OvЁ MXS&Vincene MXS&Vincene ─╄OvЁ:今天很残酷,明天更残酷,后天很美好 ...
- ASP.NET转换人民币大小金额
public class DecimalToRMB { /// <summary> /// 转换人民币大小金额 /// </sum ...
- C#随机生成不重复邀请码&创建登录Token&转换人民币大小金额
/// <summary> /// 创建登陆Token /// </summary> /// <param name="length">< ...
- javascript 中文数字阿拉伯数字转换类 Nzh
之前工作中碰到了数字转中文的情景,网上找的现成方法或多或少不合我的口味,最后还是自已写了一个. 现在整理了一下,补充了繁体,自定义字符,以及反函数(中文数字转阿拉伯数字) 现在发布出来,希望能合大家的 ...
- 限制HTML的input只能输入数字、英文、汉字...
限制HTML的input只能输入数字.英文.汉字... 关键词:正则表达式, JavaScript, HTML, input 常用HTML正则表达式1.只能输入数字和英文的:<input onk ...
- Android editview 设置只能输入数字、字母和汉字
Android editview 设置只能输入数字.字母和汉字 当处理密码.昵称等特殊情况的时候,往往需要对输入内容加以限制.对于单纯的一种输入法限制可以对键盘和editview熟悉进行控制,而对于多 ...
- ORACLE数字转换人民币大写
ORACLE 数字转换人民币大写 示例. 数字 :183066999230.68 人民币大写 :壹仟捌佰参拾亿陆仟陆佰玖拾玖万玖仟贰佰参 ...
- 字母数字、字母、汉字验证码 (java)
原文:http://blog.csdn.net/qh_java/article/details/49854477 一.字母数字,字母,汉字验证码的生成代码 1.字母数字验证码: package com ...
- SQL中的数字、字母和汉字
知识点001 当变量的数据类型为VARCHAR时,变量赋值后,变量中的字符所占字节数,数字和字母是1个bytes,汉字是2个bytes; 当变量的数据类型为NVARCHAR时,变量赋值后,变量中的字符 ...
随机推荐
- Linux基本开发环境配置git,c++,nodejs,nginx
Linux基本开发环境配置 前一篇文章配置了基本的SSH,本文来讲讲关于基本的开发环境的配置,包括git,c,c++,nodejs,nginx. 安装git和配置无密码登录github yum ins ...
- Unity性能优化-降低功耗,发热量,耗电量之OnDemandRendering篇
公司游戏项目,手机运行严重发烫,耗电量飞快.在暂时无法做其他美术性和技术性优化的情况下,我写了这个公司内部文档,并做了个实验,今天干脆公布出来,希望对大家有用. --官方文档: Unity - Scr ...
- Avalnoia跨平台实战记录(一),Avalonia初始化
前言: 记录一下小菜鸟程序员从WPF一知半解转向Avalonia跨平台桌面端开发的一点记录和感想,我个人是比较喜欢用.NET来开发的,当然,这也和我的技术栈有很大关系,本人只是从大专出来的,在学校里学 ...
- python批量检测链接是否可正常打开
通过一些爬虫脚本爬取图站图片,但是发现有些图片是没法打开的,可能返回404的code码 所以设计一个脚本,对所有的图片地址进行检查,返回200的保存到另外一个文本内,然后再去下载 脚本逻辑很简单,直接 ...
- 为什么 Java 的垃圾收集器将堆分为老年代和新生代?
为什么 Java 的垃圾收集器将堆分为老年代和新生代? Java 垃圾收集器通过将堆内存划分为 新生代 和 老年代,优化了内存管理,提高了垃圾回收的效率.这种分代思想是基于 对象生命周期的特点. 1. ...
- 关于:js使用$.parseJSON字符串转json对象报错Uncaught SyntaxError- Unexpected token o in JSON at position 1
今天使用js使用$.parseJSON字符串转json对象报错Uncaught SyntaxError- Unexpected token o in JSON at position 1,一直找不到原 ...
- rider更新2021.2
Rider 的新功能Rider 2021.2 带有增强的 C# 语言支持,包括对代码分析.可为空引用类型和源生成器的大量更新.对于 Web 开发人员,此版本支持 ASP.NET Core Endpoi ...
- 【记录】Truenas Scale|中危漏洞,需要SMB签名
部分内容参考:等保测试问题--需要SMB签名(SMB Signing not Required) 以及 ChatGPT. Truenas常用SMB服务,但默认并不开启SMB签名.这样具有中间人攻击的风 ...
- 信息资源管理综合题之“绘制利用RSA进行数字签名的过程图并进行简要说明”
一.李三在上课中听不懂利用RSA进行数字签名的过程,老师便在黑板上清晰地画出了利用RSA进行数字签名过程图,李三方才明白是什么一回事.假设数字签名的原文方为A,按收方为B,A的公钥为(e,n),私钥为 ...
- 遇到的问题之“使用get请求时,请求参数中存在#导致后端request获取不到值”
一.问题 使用get请求时,请求参数中存在#导致后端request获取不到值 发出参数带#的请求 后端接收不到SKU的值,连后面platformId的值都没有了 二.原因 1.有些符号[参数包含有特殊 ...