<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#中将数字金额转成英文大写金额的函数的更多相关文章

  1. PHP 数字金额转换成中文大写金额的函数 数字转中文

    /** *数字金额转换成中文大写金额的函数 *String Int $num 要转换的小写数字或小写字符串 *return 大写字母 *小数位为两位 **/ function num_to_rmb($ ...

  2. 转一个财务方面常用到的数字金额转成汉字大写金额 php类

    系统里有牵扯到财务.合同等方面的处理时,常常需要把数字金额转成汉字大写金额(貌似这样正规),转一个转换的php class吧!<?php// 诸海加(ALPHA .z)// 2000-7-19 ...

  3. ORACLE金额转换成英文大写的函数

    用法如下:get_capital_money(Currency, Money) Currency: 货币或货币描述,将放在英文大写的前面: Money:金额.支持两位小数点.如果需要更多的小数点,请自 ...

  4. SQLSERVER金额转换成英文大写的函数

    CREATE FUNCTION [dbo].[f_num_eng] (@num numeric(15,2)) RETURNS varchar(400) WITH ENCRYPTION AS BEGIN ...

  5. PHP算法--将数字金额转换成大写金额

    最近在看一些PHP算法题,遇到一个将数字金额转换成大写金额的小算法题,这里贴出自己的一个例子. 注:这个小算法适用于10万以内的金额. <?php //$num = 12345.67; func ...

  6. JavaScript将输入的数字金额转换成对应的中文大写金额

    // 将输入的数字金额转换成对应的中文大写金额 // idNumber输入的数字金额,idCHN输出的中文大写金额 function TransformNumberIntoCHN(idNumber, ...

  7. 在C#中将金额转换成中文大写金额

    具体代码如下: /// <summary> /// 金额转换成中文大写金额 /// </summary> /// <param name="LowerMoney ...

  8. C#小写数字金额转换成大写人民币金额的算法

    C#小写数字金额转换成大写人民币金额的算法 第一种方法: using System.Text.RegularExpressions;//首先引入命名空间 private string DaXie(st ...

  9. c#金额转换成中文大写金额

    2018-08-24 转别人 c#金额转换成中文大写金额 /// <summary> /// 金额转换成中文大写金额 /// </summary> /// <param ...

随机推荐

  1. 洛谷P2762 太空飞行计划问题(最大权闭合图)

    题意 有$m$个实验,$n$中器材,每个实验需要使用一些器材 每个实验有收入,每个器材有花费 最大化收入 - 花费 Sol 最大权闭合图的经典应用 从$S$向每个实验连流量为该实验收入的边 从每个器材 ...

  2. 2018.7.21NOIP模拟赛?解题报告

    题面 预计得分:70 + 60 + 30 = 160 实际得分:40 + 60 + 0 = 100 T1数组开小了 T2比赛结束后5min AC T3加了个记忆话搜索wa了.. T1 zbq吊打std ...

  3. java.lang.NoSuchMethodError: org.hibernate.cfg.Environment.verifyProperties

    我在使用jpa2+spring4+hibernate4 的时候,报错java.lang.NoSuchMethodError: org.hibernate.cfg.Environment.verifyP ...

  4. 回顾PMP考试

    2014年9月20日,于我来说绝对可以说是一个重要的日子.经过考场里4个多小时(4个小时正式的时间+前面的签到以及后面的survey等)的鏖战,出去之后才发现北京外国语大学的楼宇是如此的漂亮,阳光也是 ...

  5. 使用原生JavaScript模拟getElementByClassName .

    最近在工作中,由于有一个插件必须使用jquery-pack.js,而这个包又是非常古老的jquery,所以又的函数是无法使用的,例如$()选择器以及parent()都取不到标签的内容. 所以没办法,只 ...

  6. Mybatis-Generator逆向生成Po,Mapper,XMLMAPPER(一)

    这个地方的生成需要用到三个文件,generatorConfig.xml.mybatis-generator-core-1.3.1.jar和mysql-connector-java-5.1.29.jar ...

  7. windows下安装python

    1. 进入python官网   https://www.python.org/downloads/windows/ 2.根据我们的电脑位数选择版本,尽量选择  Download Windows x86 ...

  8. json-server && axios

    json-server && axios vue2.0项目实战(3)使用axios发送请求 https://www.cnblogs.com/zhouyangla/p/6753673.h ...

  9. 安卓获取数据demo出现的问题

    时间戳是long型的数据,但其他数据都是float型,但AsyncTask要求是统一数据类型.这样我就不能把时间戳放进AsyncTask里面进行处理,我就在doInBackground中获取时间戳然后 ...

  10. C-基础:冒泡排序

    #include <fstream> #include <iostream.h> //--------------------------------------------- ...