代码
///
<summary>
/// 转换成中文数字
/// </summary>
/// <param name="number"></param>
/// <returns></returns>
public static string ToChineseNum( double number)
{
string numList = " 零壹贰叁肆伍陆柒捌玖 " ;
string rmbList = " 分角元拾佰仟万拾佰仟亿拾佰仟万 " ;
string tempOutString = null ;
if (number < 0 )
{
number = - number;
tempOutString = " 负 " ;
}
if (number > 9999999999999.99 )
return " 超出范围的人民币值 " ;
// 将小数转化为整数字符串
string tempNumberString = Convert.ToInt64(number * 100 ).ToString();
int tempNmberLength = tempNumberString.Length;
int i = 0 ;
while (i < tempNmberLength)
{
int oneNumber = Int32.Parse(tempNumberString.Substring(i, 1 ));
string oneNumberChar = numList.Substring(oneNumber, 1 );
string oneNumberUnit = rmbList.Substring(tempNmberLength - i - 1 , 1 );
if (oneNumberChar != " 零 " )
tempOutString += oneNumberChar + oneNumberUnit;
else
{
if (oneNumberUnit == " 亿 " || oneNumberUnit == " 万 " || oneNumberUnit == " 元 " || oneNumberUnit == " 零 " )
{
while (tempOutString.EndsWith( " 零 " ))
{
tempOutString = tempOutString.Substring( 0 , tempOutString.Length - 1 );
}
}
if (oneNumberUnit == " 亿 " || (oneNumberUnit == " 万 " && ! tempOutString.EndsWith( " 亿 " )) || oneNumberUnit == " 元 " )
{
tempOutString += oneNumberUnit;
}
else
{
try
{
bool tempEnd = tempOutString.EndsWith( " 亿 " );
bool zeroEnd = tempOutString.EndsWith( " 零 " );
if (tempOutString.Length > 1 )
{
bool zeroStart = tempOutString.Substring(tempOutString.Length - 2 , 2 ).StartsWith( " 零 " );
if ( ! zeroEnd && (zeroStart || ! tempEnd))
tempOutString += oneNumberChar;
}
else
{
if ( ! zeroEnd && ! tempEnd)
tempOutString += oneNumberChar;
}
}
catch
{
return " 零元零分 " ;
}
}
}
i += 1 ;
}
while (tempOutString.EndsWith( " 零 " ))
{
tempOutString = tempOutString.Substring( 0 , tempOutString.Length - 1 );
}
if (tempOutString.EndsWith( " 元 " ) || tempOutString.EndsWith( " 角 " ))
{
tempOutString = tempOutString + " 整 " ;
}
return tempOutString;
}
/// 转换成中文数字
/// </summary>
/// <param name="number"></param>
/// <returns></returns>
public static string ToChineseNum( double number)
{
string numList = " 零壹贰叁肆伍陆柒捌玖 " ;
string rmbList = " 分角元拾佰仟万拾佰仟亿拾佰仟万 " ;
string tempOutString = null ;
if (number < 0 )
{
number = - number;
tempOutString = " 负 " ;
}
if (number > 9999999999999.99 )
return " 超出范围的人民币值 " ;
// 将小数转化为整数字符串
string tempNumberString = Convert.ToInt64(number * 100 ).ToString();
int tempNmberLength = tempNumberString.Length;
int i = 0 ;
while (i < tempNmberLength)
{
int oneNumber = Int32.Parse(tempNumberString.Substring(i, 1 ));
string oneNumberChar = numList.Substring(oneNumber, 1 );
string oneNumberUnit = rmbList.Substring(tempNmberLength - i - 1 , 1 );
if (oneNumberChar != " 零 " )
tempOutString += oneNumberChar + oneNumberUnit;
else
{
if (oneNumberUnit == " 亿 " || oneNumberUnit == " 万 " || oneNumberUnit == " 元 " || oneNumberUnit == " 零 " )
{
while (tempOutString.EndsWith( " 零 " ))
{
tempOutString = tempOutString.Substring( 0 , tempOutString.Length - 1 );
}
}
if (oneNumberUnit == " 亿 " || (oneNumberUnit == " 万 " && ! tempOutString.EndsWith( " 亿 " )) || oneNumberUnit == " 元 " )
{
tempOutString += oneNumberUnit;
}
else
{
try
{
bool tempEnd = tempOutString.EndsWith( " 亿 " );
bool zeroEnd = tempOutString.EndsWith( " 零 " );
if (tempOutString.Length > 1 )
{
bool zeroStart = tempOutString.Substring(tempOutString.Length - 2 , 2 ).StartsWith( " 零 " );
if ( ! zeroEnd && (zeroStart || ! tempEnd))
tempOutString += oneNumberChar;
}
else
{
if ( ! zeroEnd && ! tempEnd)
tempOutString += oneNumberChar;
}
}
catch
{
return " 零元零分 " ;
}
}
}
i += 1 ;
}
while (tempOutString.EndsWith( " 零 " ))
{
tempOutString = tempOutString.Substring( 0 , tempOutString.Length - 1 );
}
if (tempOutString.EndsWith( " 元 " ) || tempOutString.EndsWith( " 角 " ))
{
tempOutString = tempOutString + " 整 " ;
}
return tempOutString;
}