惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
MongoDB | Blog
MongoDB | Blog
博客园_首页
博客园 - 三生石上(FineUI控件)
博客园 - 聂微东
B
Blog RSS Feed
D
Docker
IT之家
IT之家
大猫的无限游戏
大猫的无限游戏
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
阮一峰的网络日志
阮一峰的网络日志
罗磊的独立博客
Recent Announcements
Recent Announcements
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
A
About on SuperTechFans
The GitHub Blog
The GitHub Blog
G
Google Developers Blog
V
V2EX
量子位
雷峰网
雷峰网
月光博客
月光博客
云风的 BLOG
云风的 BLOG
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
T
Tailwind CSS Blog

博客园 - 彭旭

VNC远程Gnome图形桌面(openEuler 20.03 LTS系统) [WPF]控件应用多个样式 [ASP.NET MVC] Real-time之HTML5 服务器发送事件(server-sent event) [WCF]DomainServices客户端操作异常处理 [Silverlight]监听指定控件(FrameworkElement)的依赖属性(DependencyProperty)的更改 [Silverlight]键盘钩子KeyboardHook [Chrome扩展]屏蔽Google搜索结果重定向 Linq Distinct扩展 [Winform/C#]点击工作区域移动窗体 [WinForm] C#避免Panel(ScrollableControl)的子控件获取焦点时滚动条自动滚动 C#远程连接Oracle数据库(不安装客户端) RichTextBox.MouseWheel事件控制父控件Panel的内容滚动 ID3v1信息结构(MP3文件)的读取、修改(C#) 在线编辑Office文件 SQL优化 将自然数分解为若干连续的自然数 大数阶乘 查看文件夹大小及占用空间 VS2005开发WAP网站初识 - 彭旭 - 博客园
小写金额转换为大写金额
彭旭 · 2010-05-12 · via 博客园 - 彭旭

前言

在很多地方都有用到将小写金额转换为大写金额,就是将类似1234.56转换为壹仟贰佰叁拾肆圆伍角陆分。

到底要怎样实现呢?其实只要仔细注意自己到底是怎么读的,细细揣摩一下。1 在千位:壹仟、2 在百位:贰佰......

所以有两个过程:

1.讲阿拉伯数字转换为大写数字。

2.在各位后面加上诸如:万、仟、佰、拾、圆、分、角。这里需要注意,比如壹仟圆,百位、十位及个位都是 0,总不能说壹仟零佰零拾零圆吧?

  还有,比如多少万多少圆,这里圆、万、亿、兆,这几个的不能丢的。

正文

/// <summary>
/// 小写金额转换为大写金额
/// </summary>
/// <param name="figures">小写金额</param>
/// <returns>大写金额</returns>
public string Figures2Words(decimal figures)
{
StringBuilder words
= new StringBuilder();
string cnNumber = "零壹贰叁肆伍陆柒捌玖";//大写
string cnUnit = "分角圆拾佰仟万拾佰仟亿拾佰仟兆拾佰仟";//单位
string temp = Math.Round(figures + (decimal)0.001, 2).ToString().Replace(".", string.Empty);//精确到 2 位小数,并去掉 . 号
try
{
int length = temp.Length - 1;
if (length > 0 && length < 18)//处理仟兆以内
{
int j = 0;
int n = 0;
for (int i = 0; i <= length; i++)
{
j
= (int)temp[i] - 48;// 当前位转换为索引。0 在 ASCII中对应48,1 为 49,依次类推
n = i + 1 >= length ? (int)temp[length] - 48 : (int)temp[i + 1] - 48;//高一位转换为索引
if (j == 0)//当前位数字为 0
{
if (length - i == 2 || length - i == 6 || length - i == 10 || length - i == 14)//对应圆、万、亿、兆,(length - i - 2) % 4 == 0
{
words.Append(cnUnit[length
- i]);
}
else
{
if (n != 0)
{
words.Append(cnNumber[j]);
}
}
}
else//当前位数字不为 0
{
words.Append(cnNumber[j]);
//数字转换为大写
words.Append(cnUnit[length - i]);//其后加上货币单位
}
}
//words.Append("整");
}
else
{
words.Append(
"溢出");
}
}
catch
{
return string.Empty;
}
return words.ToString();
}