将小写金额转换成人民币大写金额
2008-12-02 14:02
507 查看
这个是好久以前用到的,最近又有人问到,所以拿出来晒晒。
/// <summary>
/// 将小写金额转换成人民币大写金额
/// </summary>
public class ChinaMoney
{
private static string [] HanDigiStr = {"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
private static string [] HanDiviStr = { "","拾","佰","仟","万","拾","佰","仟","亿",
"拾","佰","仟","万","拾","佰","仟","亿",
"拾","佰","仟","万","拾","佰","仟" };
private static string PositiveIntegerToHanStr(string NumStr)
{
string RMBStr="";
int len,n;
bool hasvalue=false,lastzero=false;
len = NumStr.Length;
for(int i=0;i<len;i++)
{
n = NumStr[i] - '0';
int j=len-i-1;
if( n!=0 )
{
if( lastzero ) RMBStr += HanDigiStr[0];
RMBStr += HanDigiStr
;
RMBStr += HanDiviStr[len-i-1];
hasvalue = true;
}
else
{
if( j==8 || j==4 && hasvalue )
RMBStr += HanDiviStr[len-i-1];
}
if( j%8==0 ) hasvalue = false;
lastzero = (n==0) && (j%4!=0);
}
if( RMBStr.Length==0 ) return HanDigiStr[0];
return RMBStr;
}
public static string NumToRMBStr(double val)
{
if(val>100000000000) return "数字过大!";
string SignStr="",TailStr="";
double fraction=0;
Int64 integer=0;
if( val<0 )
{
val = -val;
SignStr = "负";
}
integer=Convert.ToInt64(val-val%1);
int jiao,fen;
fraction = Math.Round(val%1,2);
fen = Convert.ToInt32((fraction*100)%10);//分
jiao = Convert.ToInt32((fraction*100-fen)/10);//角
if( jiao==0 && fen==0 )
{
TailStr = "整";
}
else
{
TailStr = HanDigiStr[jiao];
if( jiao!=0 )
TailStr += "角";
if( integer==0 && jiao==0 )
TailStr = "";
if( fen!=0 )
TailStr += HanDigiStr[fen] + "分";
}
return SignStr+PositiveIntegerToHanStr( integer.ToString() )+"元"+TailStr;
}
}
/// <summary>
/// 将小写金额转换成人民币大写金额
/// </summary>
public class ChinaMoney
{
private static string [] HanDigiStr = {"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
private static string [] HanDiviStr = { "","拾","佰","仟","万","拾","佰","仟","亿",
"拾","佰","仟","万","拾","佰","仟","亿",
"拾","佰","仟","万","拾","佰","仟" };
private static string PositiveIntegerToHanStr(string NumStr)
{
string RMBStr="";
int len,n;
bool hasvalue=false,lastzero=false;
len = NumStr.Length;
for(int i=0;i<len;i++)
{
n = NumStr[i] - '0';
int j=len-i-1;
if( n!=0 )
{
if( lastzero ) RMBStr += HanDigiStr[0];
RMBStr += HanDigiStr
;
RMBStr += HanDiviStr[len-i-1];
hasvalue = true;
}
else
{
if( j==8 || j==4 && hasvalue )
RMBStr += HanDiviStr[len-i-1];
}
if( j%8==0 ) hasvalue = false;
lastzero = (n==0) && (j%4!=0);
}
if( RMBStr.Length==0 ) return HanDigiStr[0];
return RMBStr;
}
public static string NumToRMBStr(double val)
{
if(val>100000000000) return "数字过大!";
string SignStr="",TailStr="";
double fraction=0;
Int64 integer=0;
if( val<0 )
{
val = -val;
SignStr = "负";
}
integer=Convert.ToInt64(val-val%1);
int jiao,fen;
fraction = Math.Round(val%1,2);
fen = Convert.ToInt32((fraction*100)%10);//分
jiao = Convert.ToInt32((fraction*100-fen)/10);//角
if( jiao==0 && fen==0 )
{
TailStr = "整";
}
else
{
TailStr = HanDigiStr[jiao];
if( jiao!=0 )
TailStr += "角";
if( integer==0 && jiao==0 )
TailStr = "";
if( fen!=0 )
TailStr += HanDigiStr[fen] + "分";
}
return SignStr+PositiveIntegerToHanStr( integer.ToString() )+"元"+TailStr;
}
}
相关文章推荐
- "黑马程序员“将小写金额转换成人民币大写金额
- js将人民币小写金额转换为大写
- jscript实现的客户端小写金额转换成人民币大写金额(最大千万元位)
- C#小写数字金额转换成大写人民币金额的算法
- 小写金额转换为人民币大写
- JS将人民币小写金额转换为大写
- jscript实现的客户端小写金额转换成人民币大写金额(最大千万元位)
- .NET把小写数字金额转换成大写人民币金额的两种算法
- 利用创建型工厂方法模式编写小写数字金额转换为人民币大写C#代码。
- 如何将商品金额小写转换成大写
- 【SQL】Oracle实现小写金额转换成大写的方法
- .Net小写转换成大写的人民币详细代码
- 写一个程序,语言不限,能将人民币金额从阿拉伯数字转换为大写汉字表示。例如,把1234.56转换为壹仟贰佰叁拾肆圆零伍角陆分。
- C#金额小写转换为大写
- 将小写金额转换为中文大写的SQL函数
- [转贴]将小写金额转换为中文大写的SQL函数
- Java金额转换为汉语中人民币的大写
- 将小写金额转换为英文大写的SQL函数
- 人民币小写转换成大写
- 在Excel中将小写金额转换成人民币