2018-4-29-C#-金额转中文大写
| title | author | date | CreateTime | categories |
|---|---|---|---|---|
|
C# 金额转中文大写
|
lindexi
|
2018-04-29 09:50:38 +0800
|
2018-04-02 21:42:22 +0800
|
C#
|
今天看到一个库是把金额转中文大写,看起来很容易,所以我就自己写了。
创建的项目是创建一个 dot net core 的项目,实际上这个项目可以创建为 Stand 的。
首先创建类,这个类的构造传入一个 double 作为人民币
public class Money
{
public Money(double money)
{
_money = money;
} private double _money;
}
然后创建方法转换
public string ToCapital()
{
if (Math.Abs(_money) < 0.0001)
{
return "零元";
} var str = GetIntPart();
GetDecimalPart(str);
return str.ToString();
}
其中 GetIntPart 是转换小数点前的部分,小数点之后的使用 GetDecimalPart 计算。
然后创建一些使用的数组
private static readonly List<char> Uppers = new List<char>()
{
'零',
'壹',
'贰',
'叁',
'肆',
'伍',
'陆',
'柒',
'捌',
'玖'
}; private static readonly List<char> Units = new List<char>()
{
'分',
'角'
}; private static readonly List<char> Grees = new List<char>()
{
'元',
'拾',
'佰',
'仟',
'万',
'拾',
'佰',
'仟',
'亿',
'拾',
'佰',
'仟',
'万',
'拾',
'佰'
};
转换小数点前的代码
StringBuilder str = new StringBuilder();
var money = _money; for (int i = 0; money > 0.99999; i++)
{
var n = (int) (money % 10);
str.Insert(0,Grees[i]);
str.Insert(0,Uppers[n]);
money = money / 10;
money = money - n / 10.0;
}
但是这样转换得到的存在一些零,如输入 100 会输出 壹佰零拾零元 ,所以需要对输出转换
private StringBuilder GetIntPart()
{
StringBuilder str = new StringBuilder();
var money = _money; for (int i = 0; money > 0.99999; i++)
{
var n = (int) (money % 10);
str.Insert(0, Grees[i]);
str.Insert(0, Uppers[n]);
money = money / 10;
money = money - n / 10.0;
} str = str.Replace("零亿", "亿零");
str = str.Replace("零万", "万零"); str = str.Replace("零拾", "零");
str = str.Replace("零佰", "零");
str = str.Replace("零仟", "零"); str = str.Replace("零零", "零");
str = str.Replace("零零", "零"); str = str.Replace("零亿", "亿");
str = str.Replace("零万", "万");
str = str.Replace("零元", "元"); return str;
}
转换小数的代码
private void GetDecimalPart(StringBuilder str)
{
var money = _money * 100;
for (int i = 0; i < 2; i++)
{
var n = (int) (money % 10);
if (n != 0)
{
str.Insert(0, Units[i]);
str.Insert(0, Uppers[n]);
} money = money / 10;
}
}
所有代码
<script src='https://gitee.com/lindexi/codes/w6bxlue9o14rv5nscjyhf20/widget_preview?title=Money'></script>
代码请看 https://gitee.com/lindexi/codes/w6bxlue9o14rv5nscjyhf20
参见:src/Money.php · 趋势软件/capital - 码云 Gitee.com
2018-4-29-C#-金额转中文大写的更多相关文章
- 【转载】C#工具类:人民币金额转换为中文大写
在涉及到金融业务这一块的系统设计中,时常能够遇到的情况是需要将阿拉伯数字的人民币金额自动转换为中文的大写金额.现在互联网上也有很多网站提供此类服务,只要你输入人民币的阿拉伯数字金额,输入后自动给你转换 ...
- C# 金额转中文大写
今天看到一个库是把金额转中文大写,看起来很容易,所以我就自己写了 创建的项目是创建一个 dot net core 的项目,实际上这个项目可以创建为 Stand 的. 首先创建类,这个类的构造传入一个 ...
- vue filters 金额转中文大写
capitalAmount(amount: any) { // 汉字的数字 const cnNums = ["零", "壹 ...
- java数字金额转中文大写
package com.example.convert; import java.text.DecimalFormat; import java.util.Scanner; /** * 金额转换 * ...
- js金额转中文大写
基础参数: var AIW_number = {0:'零', 1:'壹', 2:'贰', 3:'叁', 4:'肆', 5:'伍', 6:'陆', 7:'柒', 8:'捌', 9:'玖'} var AI ...
- XtraReport报表入库单数字转中文大写数字
先看看打印入库单的效果图,看如下: 客户要求合计一行,要求大写中文数字.XtraReport报表是如何做出以上图的效果呢?因为是要把数字转成大写中文数字,得先准备数字转大写中文数字的函数.因网上有很多 ...
- .net 金额中文大写 日期转中文
金额中文大写 #region 中文大写 /// <summary> /// 返回中文数字 ,如壹佰元整 /// </summary> /// <param name=&q ...
- JS把数字金额转换成中文大写数字的函数
//把数字金额转换成中文大写数字的函数 function num2rmb ($num){ $c1="零壹贰叁肆伍陆柒捌玖"; $c2="分角元拾佰仟万拾佰仟亿" ...
- JS实现 阿拉伯数字金额转换为中文大写金额 可以处理负值
JS实现 阿拉伯数字金额转换为中文大写金额 可以处理负值 //************************* 把数字金额转换成中文大写数字的函数(可处理负值) ****************** ...
随机推荐
- .net core/.net 使用 CommandLineParser 来标准化地解析命令行
CommandLineParser 是一款用于解析命令行参数的 NuGet 包.你只需要关注你的业务,而命令行解析只需要极少量的配置代码. 本文将介绍如何使用 CommandLineParser 高效 ...
- Leetcode680.Valid Palindrome II验证回文字符串2
给定一个非空字符串 s,最多删除一个字符.判断是否能成为回文字符串. 示例 1: 输入: "aba" 输出: True 示例 2: 输入: "abca" 输出: ...
- Codeforces 439C
题目链接 比赛时间没能通过==, 只能说明自己代码写的太不严谨咯! 解题思想就是贪心 先判断无解的情况: 1. 奇数不够,因为偶数是无法凑成奇数的 2. 偶数不够,2个奇数可以凑成一个偶数 3. 在奇 ...
- LeedCode --- Best Time to Buy and Sell Stock
题目链接 题意: find the maximum positive difference between the price on the ith day and the jth day 附上代码: ...
- 【JZOJ4925】【GDOI2017模拟12.18】稻草人
题目描述 YLOI村有一片荒地,上面竖着N个稻草人,村民们每年多次在稻草人们的周围举行祭典. 有一次,YLOI村的村长听到了稻草人们的启示,计划在荒地中开垦一片田地.和启示中的一样,田地需要满足以下条 ...
- Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第二十一章:环境光遮蔽(AMBIENT OCCLUSION)
原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第二十一章:环境光遮蔽(AMBIENT OCCLUSION) 学习目标 ...
- 【JZOJ4820】【NOIP2016提高A组模拟10.15】最大化
题目描述 输入 输出 样例输入 3 2 4 0 -10 8 -2 -2 样例输出 4 数据范围 解法 枚举两条扫描线,在这两条扫描线之间的矩阵,可以将之转化为一个序列b[i]=a[i][1..m]. ...
- python 不定长参数**kwargs
- sql函数的使用——系统函数
n sys_context 1)terminal:当前会话客户所对应的终端的标识符 2)lanuage:语言 3)db_name:当前数据库名称 4)nls_date_format:当前会话客户端所 ...
- idea建立maven聚合项目 标签: mavenidea 2017-01-08 15:33 2477人阅读 评论(30)
上篇文章写了如何用idea建立maven项目,idea建立maven聚合项目我感觉不如eclipse方便,不过并不是没有办法,下面写一下这个小教程. 建立maven project 建立maven p ...