C#中将数字金额转成英文大写金额的函数
<span style="white-space:pre"> </span>/// <summary>
/// 数字转金额大写
/// 调用示例:String desc = CommonUtils.convertEnDes(new Decimal("100.55"), "say", "RMB", "only"));
/// 返回 desc为"say RMB one hundred dolt five five only"
/// </summary>
/// <returns></returns>
public static String convertEnDes(Object obj, String prefix, String currencyISO, String suffix)
{
if (obj == null)
{
return "";
}
Decimal val = Convert.ToDecimal(obj);
StringBuilder sb = new StringBuilder();
sb.Append(prefix).Append(" ");
String[] amtEnDesc = getAmtEnDesc(val);
sb.Append(currencyISO).Append(" ");
sb.Append(amtEnDesc[0]).Append(" "); if (amtEnDesc[1].Trim().Length != 0 && !"zero".Equals(amtEnDesc[1].Trim(), StringComparison.OrdinalIgnoreCase))
{
sb.Append("point ").Append(amtEnDesc[1]);
}
sb.Append(" ").Append(suffix);
return sb.ToString().ToUpper();
} private static String convertLessThanOneThousand(long number)
{
String soFar;
if (number % 100 < 20)
{
soFar = FTConst.numNames[(int)(number % 100)];
number /= 100;
}
else
{
soFar = FTConst.numNames[(int)(number % 10)];
number /= 10; soFar = FTConst.tensNames[(int)(number % 10)] + soFar;
number /= 10;
}
if (number == 0)
return soFar;
return FTConst.numNames[(int)number] + "hundred " + soFar;
} //转换整数部分
public static String convert(long number)
{
string[] majorNames = { " ", "thousand ",
"million ", "billion ", "trillion ", "quadrillion ",
"quintillion " };
if (number == 0)
{
return "zero ";
}
String prefix = " ";
if (number < 0)
{
number = -number;
prefix = "negative ";
}
String soFar = " ";
int place = 0;
do
{
long n = (number % 1000);
if (n != 0)
{
String s = convertLessThanOneThousand(n);
soFar = s + majorNames[place] + soFar;
}
place++;
number /= 1000;
} while (number > 0);
return (prefix + soFar).Trim();
} //转换小数部分
public static String convertDot(string number)
{
if (number.Trim().Length == 0)
{
return " ";
}
String soFar = " ";
long c = Convert.ToInt64(number);
do
{
long n = (c % 10);
if (n != 0)
{
String s = convertLessThanOneThousand(n);
soFar = s + soFar;
} c /= 10;
} while (c > 0);
return soFar.Trim();
} private static String[] getAmtEnDesc(Decimal val)
{
String[] ret = new String[2];
String valDes = val.ToString();
String[] valSplit = valDes.Split('.');
long part = Convert.ToInt64(valSplit[0]);
ret[0] = convert(part);
try
{
ret[1] = convertDot(valSplit[1]);
}
catch
{
ret[1] = "";
}
return ret;
}
C#中将数字金额转成英文大写金额的函数的更多相关文章
- PHP 数字金额转换成中文大写金额的函数 数字转中文
/** *数字金额转换成中文大写金额的函数 *String Int $num 要转换的小写数字或小写字符串 *return 大写字母 *小数位为两位 **/ function num_to_rmb($ ...
- 转一个财务方面常用到的数字金额转成汉字大写金额 php类
系统里有牵扯到财务.合同等方面的处理时,常常需要把数字金额转成汉字大写金额(貌似这样正规),转一个转换的php class吧!<?php// 诸海加(ALPHA .z)// 2000-7-19 ...
- ORACLE金额转换成英文大写的函数
用法如下:get_capital_money(Currency, Money) Currency: 货币或货币描述,将放在英文大写的前面: Money:金额.支持两位小数点.如果需要更多的小数点,请自 ...
- SQLSERVER金额转换成英文大写的函数
CREATE FUNCTION [dbo].[f_num_eng] (@num numeric(15,2)) RETURNS varchar(400) WITH ENCRYPTION AS BEGIN ...
- PHP算法--将数字金额转换成大写金额
最近在看一些PHP算法题,遇到一个将数字金额转换成大写金额的小算法题,这里贴出自己的一个例子. 注:这个小算法适用于10万以内的金额. <?php //$num = 12345.67; func ...
- JavaScript将输入的数字金额转换成对应的中文大写金额
// 将输入的数字金额转换成对应的中文大写金额 // idNumber输入的数字金额,idCHN输出的中文大写金额 function TransformNumberIntoCHN(idNumber, ...
- 在C#中将金额转换成中文大写金额
具体代码如下: /// <summary> /// 金额转换成中文大写金额 /// </summary> /// <param name="LowerMoney ...
- C#小写数字金额转换成大写人民币金额的算法
C#小写数字金额转换成大写人民币金额的算法 第一种方法: using System.Text.RegularExpressions;//首先引入命名空间 private string DaXie(st ...
- c#金额转换成中文大写金额
2018-08-24 转别人 c#金额转换成中文大写金额 /// <summary> /// 金额转换成中文大写金额 /// </summary> /// <param ...
随机推荐
- 洛谷P2762 太空飞行计划问题(最大权闭合图)
题意 有$m$个实验,$n$中器材,每个实验需要使用一些器材 每个实验有收入,每个器材有花费 最大化收入 - 花费 Sol 最大权闭合图的经典应用 从$S$向每个实验连流量为该实验收入的边 从每个器材 ...
- 2018.7.21NOIP模拟赛?解题报告
题面 预计得分:70 + 60 + 30 = 160 实际得分:40 + 60 + 0 = 100 T1数组开小了 T2比赛结束后5min AC T3加了个记忆话搜索wa了.. T1 zbq吊打std ...
- java.lang.NoSuchMethodError: org.hibernate.cfg.Environment.verifyProperties
我在使用jpa2+spring4+hibernate4 的时候,报错java.lang.NoSuchMethodError: org.hibernate.cfg.Environment.verifyP ...
- 回顾PMP考试
2014年9月20日,于我来说绝对可以说是一个重要的日子.经过考场里4个多小时(4个小时正式的时间+前面的签到以及后面的survey等)的鏖战,出去之后才发现北京外国语大学的楼宇是如此的漂亮,阳光也是 ...
- 使用原生JavaScript模拟getElementByClassName .
最近在工作中,由于有一个插件必须使用jquery-pack.js,而这个包又是非常古老的jquery,所以又的函数是无法使用的,例如$()选择器以及parent()都取不到标签的内容. 所以没办法,只 ...
- Mybatis-Generator逆向生成Po,Mapper,XMLMAPPER(一)
这个地方的生成需要用到三个文件,generatorConfig.xml.mybatis-generator-core-1.3.1.jar和mysql-connector-java-5.1.29.jar ...
- windows下安装python
1. 进入python官网 https://www.python.org/downloads/windows/ 2.根据我们的电脑位数选择版本,尽量选择 Download Windows x86 ...
- json-server && axios
json-server && axios vue2.0项目实战(3)使用axios发送请求 https://www.cnblogs.com/zhouyangla/p/6753673.h ...
- 安卓获取数据demo出现的问题
时间戳是long型的数据,但其他数据都是float型,但AsyncTask要求是统一数据类型.这样我就不能把时间戳放进AsyncTask里面进行处理,我就在doInBackground中获取时间戳然后 ...
- C-基础:冒泡排序
#include <fstream> #include <iostream.h> //--------------------------------------------- ...