1.调用 ConvertIntToUppercaseAmount(String value) 即可
<summary>
///人民币大小写金额转换
///</summary>
classRMBCapitalization
{
privateconststring DXSZ ="零壹贰叁肆伍陆柒捌玖";
privateconststring DXDW ="毫厘分角元拾佰仟萬拾佰仟亿拾佰仟萬兆拾佰仟萬亿京拾佰仟萬亿兆垓";
private const string SCDW = "元拾佰仟萬亿京兆垓";
///<summary>
///转换整数为大写金额
///最高精度为垓,保留小数点后4位,实际精度为亿兆已经足够了,理论上精度无限制,如下所示:
///序号:...30.29.28.27.26.25.24 23.22.21.20.19.18 17.16.15.14.13 12.11.10.9 8 7.6.5.4 . 3.2.1.0
///单位:...垓兆亿萬仟佰拾 京亿萬仟佰拾 兆萬仟佰拾 亿仟佰拾 萬仟佰拾元 . 角分厘毫
///数值:...1000000 000000 00000 0000 00000 . 0000
///下面列出网上搜索到的数词单位:
///元、十、百、千、万、亿、兆、京、垓、秭、穰、沟、涧、正、载、极
///</summary>
///<param name="capValue">整数值</param>
///<returns>返回大写金额</returns>
privatestring ConvertIntToUppercaseAmount(string capValue)
{
string currCap =""; //当前金额
string capResult =""; //结果金额
string currentUnit = "";//当前单位
string resultUnit = ""; //结果单位
int prevChar = -1; //上一位的值
int currChar = 0; //当前位的值
int posIndex = 4; //位置索引,从"元"开始
if (Convert.ToDouble(capValue) == 0)return"";
for (int i = capValue.Length - 1; i >= 0; i--)
{
currChar =Convert.ToInt16(capValue.Substring(i, 1));
if (posIndex > 30)
{
//已超出最大精度"垓"。注:可以将30改成22,使之精确到兆亿就足够了
break;
}
elseif (currChar != 0)
{
//当前位为非零值,则直接转换成大写金额
currCap = DXSZ.Substring(currChar, 1) + DXDW.Substring(posIndex, 1);
}
else
{
//防止转换后出现多余的零,例如:3000020
switch (posIndex)
{
case 4: currCap ="元";break;
case 8: currCap ="萬";break;
case 12: currCap ="亿";break;
case 17: currCap ="兆";break;
case 23: currCap ="京";break;
case 30: currCap ="垓";break;
default:break;
}
if (prevChar != 0 )
{
if (currCap !="")
{
if (currCap !="元") currCap +="零";
}
else
{
currCap ="零";
}
}
}
//对结果进行容错处理
if(capResult.Length > 0)
{
resultUnit = capResult.Substring(0,1);
currentUnit = DXDW.Substring(posIndex, 1);
if (SCDW.IndexOf(resultUnit) > 0)
{
if (SCDW.IndexOf(currentUnit) > SCDW.IndexOf(resultUnit))
{
capResult = capResult.Substring(1);
}
}
}
capResult = currCap + capResult;
prevChar = currChar;
posIndex += 1;
currCap ="";
}
return capResult;
}
///<summary>
///转换小数为大写金额
///</summary>
///<param name="capValue">小数值</param>
///<param name="addZero">是否增加零位</param>
///<returns>返回大写金额</returns>
privatestring ConvertDecToUppercaseAmount(string capValue,bool addZero)
{
string currCap ="";
string capResult ="";
int prevChar = addZero ? -1 : 0;
int currChar = 0;
int posIndex = 3;
if (Convert.ToInt16(capValue) == 0)return"";
for (int i = 0; i < capValue.Length; i++)
{
currChar =Convert.ToInt16(capValue.Substring(i, 1));
if (currChar != 0)
{
currCap = DXSZ.Substring(currChar, 1) + DXDW.Substring(posIndex, 1);
}
else
{
if (Convert.ToInt16(capValue.Substring(i)) == 0)
{
break;
}
elseif (prevChar != 0)
{
currCap ="零";
}
}
capResult += currCap ;
prevChar = currChar;
posIndex -= 1;
currCap ="";
}
return capResult;
}
///<summary>
///人民币大写金额
///</summary>
///<param name="value">人民币数字金额值</param>
///<returns>返回人民币大写金额</returns>
publicstring RMBAmount(double value)
{
string capResult ="";
string capValue =string.Format("{0:f4}", value); //格式化
int dotPos = capValue.IndexOf("."); //小数点位置
bool addInt = (Convert.ToInt32(capValue.Substring(dotPos+1)) == 0);//是否在结果中加"整"
bool addMinus = (capValue.Substring(0, 1) =="-"); //是否在结果中加"负"
int beginPos = addMinus ? 1 : 0; //开始位置
string capInt = capValue.Substring(beginPos, dotPos); //整数
string capDec = capValue.Substring(dotPos + 1); //小数
if (dotPos > 0)
{
capResult = ConvertIntToUppercaseAmount(capInt) +
ConvertDecToUppercaseAmount(capDec,Convert.ToDouble(capInt) != 0 ?true :false);
}
else
{
capResult = ConvertIntToUppercaseAmount(capDec);
}
if (addMinus) capResult ="负" + capResult;
if (addInt) capResult +="整";
return capResult;
}
}
人民币大小写金额转换相关推荐
- C#人民币大小写金额转换(C#版本)
1.调用 ConvertIntToUppercaseAmount(String value) 即可 <summary> /// 人民币大小写金额转换 /// < ...
- 应用Excel实现大小写金额转换
在基本建设审计中,经常需要同时写明审定工程造价的大小写金额,如2942635.44元写为"贰佰玖拾肆万贰仟陆佰叁拾伍元肆角肆分",388372.80元写为"叁拾捌万捌仟叁 ...
- 人民币大小写格式转换
using System; using System.Text; using System.Text.RegularExpressions; /// <summary> /// 人民币大小 ...
- 工具篇——MoneyFormatUtil(用于将人民币小写金额转换成大写金额)
写代码的四点: 1.明确需求.要做什么? 2.分析思路.要怎么做?(1,2,3--) 3.确定步骤.每一个思路要用到哪些语句.方法和对象. 4.代码实现.用具体的语言代码将思路实现出来. 学习新技术的 ...
- 大小写金额转换(电子表格大小写金额转换)
excel金额大小写怎么转换?1.比如输入,得出伍万肆仟柒佰叁? 若输入数据在A1单元格内,则公式如下: =IF(LEN(A1)=1,"零元零"&TEXT(A1," ...
- c大小写转换函数_Excel中的大小写金额转换,技巧法和函数法,职场必学技巧
财务工作中,经常需要将小写的数字,转换成大写的数字,有两种方法轻松解决,技巧法以及函数法. 小写转大写技巧法 我们选中单元格,然后右键,设置单元格格式(快捷键是CTRL+1),在弹出的设置单元格格式窗 ...
- 巧用Excel 轻松转换人民币大小写
巧用Excel 轻松转换人民币大小写 2010-02-08 11:22 要将人民币小写金额转换成大写格式,用Excel提供的格式,将自定义格式类型中的"[dbnum2]G/通用格 ...
- java人民币大小写转换_人民币大小写转换
usingSystem;usingSystem.Text;usingSystem.Text.R using System; using System.Text; using System.Text.R ...
- python数字大小写转换代码_用python实现把数字人民币金额转换成大写的脚本程序...
# -*- coding: utf-8 -*- def Num2MoneyFormat( change_number ): """ .转换数字为大写货币格式( forma ...
最新文章
- Django博客系统(写博客页面展示)
- 在LoadRunner向远程Linux/Unix执行命令行并收集性能数据
- MYSQL 获取当前日期及日期格式以及非空处理
- Vue 脚手架生成的项目结构分析||Vue 脚手架的自定义配置
- visual code php,vscode(Visual Studio Code)配置PHP开发环境的方法(已测)_编程开发_软件教程...
- php企业号自定义菜单,用php实现微信企业号自定义菜单遇到问题,请大神指点!...
- Python——PrettyTable
- Maven mvn install 本地jar添加到maven仓库中
- 21天Jenkins打卡day8-配置SSH远程服务器
- linux文件及文件夹权限
- matlab实验是啥,实验一 MATLAB的实验环境及基本命令.ppt
- 开发人员测试,也必须有测试报告
- 【托福词汇句子语法】100个句子记完7000托福单词
- Python 金融量化 道路突破策略(唐奇安道路突破策略布林带通道及其市场风险)
- 【通信原理】实验七、基于Matlab的均匀量化和非均匀量化
- python如何将秒数转化成时分秒_python时分秒化为秒 python时分秒的正则表达式
- 水倒七分、茶倒八分、酒倒满
- java pdf中插入图片
- Excel VBA 操作键盘(如:移动方向键,上下左右等)
- 人有多大胆,地有多大产
热门文章
- 为什么要做用户行为分析?
- Jetson tx2 使用 jetpack 4.3刷机全过程
- 使用IDEA创建一个Solidity项目
- 入门nosql数据库(非关系型数据库)
- (SEO优化)现身说法教你如何优化百度的收录,权重,关键词排名 SEO优化(一)
- win10设置窗口背景
- 基于RESTful的FastAPI服务模板
- python 的 *args和 **kwargs 分别是什么意思
- 如何舒服的在电视上操作电脑
- SAP 成套销售按项目销售