c#金额转换成中文大写金额
2018-08-24 转别人
c#金额转换成中文大写金额
/// <summary>
/// 金额转换成中文大写金额
/// </summary>
/// <param name="LowerMoney">eg:10.74</param>
/// <returns></returns>
public static string MoneyToUpper(string LowerMoney)
{
string functionReturnValue = null;
bool IsNegative = false; // 是否是负数
if (LowerMoney.Trim().Substring(, ) == "-")
{
// 是负数则先转为正数
LowerMoney = LowerMoney.Trim().Remove(, );
IsNegative = true;
}
string strLower = null;
string strUpart = null;
string strUpper = null;
int iTemp = ;
// 保留两位小数 123.489→123.49 123.4→123.4
LowerMoney = Math.Round(double.Parse(LowerMoney), ).ToString();
if (LowerMoney.IndexOf(".") > )
{
if (LowerMoney.IndexOf(".") == LowerMoney.Length - )
{
LowerMoney = LowerMoney + "";
}
}
else
{
LowerMoney = LowerMoney + ".00";
}
strLower = LowerMoney;
iTemp = ;
strUpper = "";
while (iTemp <= strLower.Length)
{
switch (strLower.Substring(strLower.Length - iTemp, ))
{
case ".":
strUpart = "圆";
break;
case "":
strUpart = "零";
break;
case "":
strUpart = "壹";
break;
case "":
strUpart = "贰";
break;
case "":
strUpart = "叁";
break;
case "":
strUpart = "肆";
break;
case "":
strUpart = "伍";
break;
case "":
strUpart = "陆";
break;
case "":
strUpart = "柒";
break;
case "":
strUpart = "捌";
break;
case "":
strUpart = "玖";
break;
} switch (iTemp)
{
case :
strUpart = strUpart + "分";
break;
case :
strUpart = strUpart + "角";
break;
case :
strUpart = strUpart + "";
break;
case :
strUpart = strUpart + "";
break;
case :
strUpart = strUpart + "拾";
break;
case :
strUpart = strUpart + "佰";
break;
case :
strUpart = strUpart + "仟";
break;
case :
strUpart = strUpart + "万";
break;
case :
strUpart = strUpart + "拾";
break;
case :
strUpart = strUpart + "佰";
break;
case :
strUpart = strUpart + "仟";
break;
case :
strUpart = strUpart + "亿";
break;
case :
strUpart = strUpart + "拾";
break;
case :
strUpart = strUpart + "佰";
break;
case :
strUpart = strUpart + "仟";
break;
case :
strUpart = strUpart + "万";
break;
default:
strUpart = strUpart + "";
break;
} strUpper = strUpart + strUpper;
iTemp = iTemp + ;
} strUpper = strUpper.Replace("零拾", "零");
strUpper = strUpper.Replace("零佰", "零");
strUpper = strUpper.Replace("零仟", "零");
strUpper = strUpper.Replace("零零零", "零");
strUpper = strUpper.Replace("零零", "零");
strUpper = strUpper.Replace("零角零分", "整");
strUpper = strUpper.Replace("零分", "整");
strUpper = strUpper.Replace("零角", "零");
strUpper = strUpper.Replace("零亿零万零圆", "亿圆");
strUpper = strUpper.Replace("亿零万零圆", "亿圆");
strUpper = strUpper.Replace("零亿零万", "亿");
strUpper = strUpper.Replace("零万零圆", "万圆");
strUpper = strUpper.Replace("零亿", "亿");
strUpper = strUpper.Replace("零万", "万");
strUpper = strUpper.Replace("零圆", "圆");
strUpper = strUpper.Replace("零零", "零"); // 对壹圆以下的金额的处理
if (strUpper.Substring(, ) == "圆")
{
strUpper = strUpper.Substring(, strUpper.Length - );
}
if (strUpper.Substring(, ) == "零")
{
strUpper = strUpper.Substring(, strUpper.Length - );
}
if (strUpper.Substring(, ) == "角")
{
strUpper = strUpper.Substring(, strUpper.Length - );
}
if (strUpper.Substring(, ) == "分")
{
strUpper = strUpper.Substring(, strUpper.Length - );
}
if (strUpper.Substring(, ) == "整")
{
strUpper = "零圆整";
}
functionReturnValue = strUpper; if (IsNegative == true)
{
return "负" + functionReturnValue;
}
else
{
return functionReturnValue;
}
}
decimal PriceSum = 32957.2654;
调用 var PriceSumChinese = MoneyToUpper(PriceSum.ToString());
结果:叁万贰仟玖佰伍拾柒圆贰角柒分
正则方法
/// <summary>
/// 人民币大写转换
/// </summary>
/// <param name="number">数字</param>
/// <returns>返回人民币大写,如:壹元整</returns>
public static string ConvertToChinese(decimal number)
{
var s = number.ToString("#L#E#D#C#K#E#D#C#J#E#D#C#I#E#D#C#H#E#D#C#G#E#D#C#F#E#D#C#.0B0A");
var d = Regex.Replace(s, @"((?<=-|^)[^1-9]*)|((?'z'0)[0A-E]*((?=[1-9])|(?'-z'(?=[F-L\.]|$))))|((?'b'[F-L])(?'z'0)[0A-L]*((?=[1-9])|(?'-z'(?=[\.]|$))))", "${b}${z}");
var r = Regex.Replace(d, ".", m => "负元空零壹贰叁肆伍陆柒捌玖空空空空空空空分角拾佰仟万亿兆京垓秭穰"[m.Value[] - '-'].ToString());
return r;
}
c#金额转换成中文大写金额的更多相关文章
- PHP 数字金额转换成中文大写金额的函数 数字转中文
/** *数字金额转换成中文大写金额的函数 *String Int $num 要转换的小写数字或小写字符串 *return 大写字母 *小数位为两位 **/ function num_to_rmb($ ...
- c#金额转换成中文大写金额 .Net开发Windows服务
c#金额转换成中文大写金额 2018-08-24 转别人 c#金额转换成中文大写金额 /// <summary> /// 金额转换成中文大写金额 /// </summary> ...
- 在C#中将金额转换成中文大写金额
具体代码如下: /// <summary> /// 金额转换成中文大写金额 /// </summary> /// <param name="LowerMoney ...
- java阿拉伯数字表示的金额转换成中文大写金额
最大数字要处理到千亿也就是12位整数部分我们可以分成3段处理,xxxx亿,xxxx万,xxxx元,然后小数部分比较好处理我们发现0比较难处理什么时候会出现零呢那就是两个数字之间出现一个或多个零那么数字 ...
- JS把数字金额转换成中文大写数字的函数
//把数字金额转换成中文大写数字的函数 function num2rmb ($num){ $c1="零壹贰叁肆伍陆柒捌玖"; $c2="分角元拾佰仟万拾佰仟亿" ...
- excel小写金额转换成中文大写
假设 假设数据在A1单元格 任何一个个单元格输入公式=TEXT(INT(A1),"[dbnum2]")&"元"&IF(INT(A1*10)-IN ...
- 在C#中将数字转换成中文
上篇我们讲了在MSSQL中将数字转换成中文,这篇我们讲讲在C#中将数字转换成中文 下篇将讲一下如何将金额转换成中文金额,废话不多说,具体代码如下: /// <summary> /// 数字 ...
- JavaScript将输入的数字金额转换成对应的中文大写金额
// 将输入的数字金额转换成对应的中文大写金额 // idNumber输入的数字金额,idCHN输出的中文大写金额 function TransformNumberIntoCHN(idNumber, ...
- PHP算法--将数字金额转换成大写金额
最近在看一些PHP算法题,遇到一个将数字金额转换成大写金额的小算法题,这里贴出自己的一个例子. 注:这个小算法适用于10万以内的金额. <?php //$num = 12345.67; func ...
随机推荐
- storm学习总结
1.storm shell端常用指令: 提交Topologies命令格式:storm jar [jar路径] [拓扑包名.拓扑类名] [拓扑名称]样例:storm jar /storm-starter ...
- weblogic 与项目jar冲突解决方案 ITsm部署
部署时出现找不到类itims*****IMOType 时删除 2个fvsd-res-ws-1.0.ja,itims-fvsd-res-sync.jar jar包 里面的DeviceInfoPort ...
- 了不起的WebRTC:生态日趋完善,或将实时音视频技术白菜化
本文原文由声网WebRTC技术专家毛玉杰分享. 1.前言 有人说 2017 年是 WebRTC 的转折之年,2018 年将是 WebRTC 的爆发之年,这并非没有根据.就在去年(2017年),WebR ...
- Javascript高级编程学习笔记(25)—— 函数表达式(3)模仿块级作用域
昨天写了闭包 今天就来聊聊块级作用域的事情 在绝大多数编程语言中,都有块级作用域这个概念 什么是块级作用域呢? 前面我们在刚开始讲的时候说过,JS中的大括号(不在赋值运算符的后面)表示代码块 块级作用 ...
- vue局部组件
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- JavaScript实现input输入框限制输入值的功能
限制只能输入正整数 <input type="text" onkeyup="if(this.value.length==1){this.value=this.val ...
- Spark基础-scala学习(七、类型参数)
类型参数是什么 类似于java泛型,泛型类 泛型函数 上边界Bounds 下边界 View Bounds Context Bounds Manifest Context Bounds 协变和逆变 Ex ...
- Git:fatal: Authentication failed
1.删除保存的用户名和密码 执行 下面的命令,删除保存的用户名和密码 git config --system --unset credential.helper 重新操作,提示输入用户名和密码,操作成 ...
- java中编写增删改查
按照图书数据库来说 //查询 :查询的返回值有两种类型,如果返回的数据你不确定是一条还是多条就返回一个List集合.如果你确定数据返回的是一条,可以把返回值换成Book实体类型.public List ...
- cpuset
本文属于内核文档翻译,翻译时没有遵照原文,添加了一些作者的理解,目的不是为了替代内核文档,可以作为阅读内核文档的引子,作者鼓励读者阅读原有的内核文档.原文参考3.10.514内核文档cpuset.tx ...