using System;
namespace NumberToWord
{
/// <summary>
/// NumToWord에 대한 요약 설명입니다.
/// </summary>
public class NumToWord
{
public NumToWord()
{
//
// TODO: 여기에 생성자 논리를 추가합니다.
//
}
public static string [] strModule = {
"",
"Thousand ",
"Million ",
"Billion ",
"Trillion "
};
public static string [] strOneIntStr = {
"",
"One",
"Two",
"Three",
"Four",
"Five",
"Six",
"Seven",
"Eight",
"Nine"
};
public static string N2W(double DouStr)
{
int inStr = (int)Math.Ceiling(DouStr);
string [] ArrInStr = inStr.ToString("#,##0").Split(',');
int iArrInStrCount = inStr.ToString("#,##0").Split(',').Length;
string strTemp = string.Empty;
string strReturnStr = "";
for(int i = 0 ; i < iArrInStrCount ; i++ )
{
int intStr = int.Parse(ArrInStr[i]);
strTemp = "";
if(intStr > 99)
{
strTemp = strOneIntStr[(int)Math.Ceiling(intStr / 100)] + "Hundred ";
}
int intStr2 = intStr % 100;
if(intStr2 > 9 && intStr2 < 20)
{
switch(intStr2)
{
case 10: strTemp += "Ten"; break;
case 11: strTemp += "Eleven"; break;
case 12: strTemp += "Twelve"; break;
case 13: strTemp += "Thirteen"; break;
case 14: strTemp += "Fourteen"; break;
case 15: strTemp += "Fifteen"; break;
case 16: strTemp += "Sixteen"; break;
case 17: strTemp += "Seventeen"; break;
case 18: strTemp += "Eighteen"; break;
case 19: strTemp += "Nineteen"; break;
}
}
else
{
switch((int)Math.Ceiling(intStr2 / 10))
{
case 2: strTemp += "Twenty "; break;
case 3: strTemp += "Thirty "; break;
case 4: strTemp += "Forty "; break;
case 5: strTemp += "Fifty "; break;
case 6: strTemp += "Sixty "; break;
case 7: strTemp += "Seventy "; break;
case 8: strTemp += "Eighty "; break;
case 9: strTemp += "Ninety "; break;
}
switch(intStr2 % 10)
{
case 1: strTemp += "One"; break;
case 2: strTemp += "Two"; break;
case 3: strTemp += "Three"; break;
case 4: strTemp += "Four"; break;
case 5: strTemp += "Five"; break;
case 6: strTemp += "Six"; break;
case 7: strTemp += "Seven"; break;
case 8: strTemp += "Eight"; break;
case 9: strTemp += "Nine"; break;
}
}
strReturnStr += strTemp + strModule[ArrInStr.Length - 1 - i];
}
strReturnStr += string.Format(" and {0:00}/100",(int)Math.Ceiling((DouStr * 100) % 100));
return strReturnStr;
}
}
}
중간이 0으로만 채워졌을때 처리가 안된듯 합니다.
1000000001를 입력하니 OneBillion Million Thousand One and 00/100
라고 나오네요
using System;
namespace NumberToWord
{
/// <summary>
/// NumToWord에 대한 요약 설명입니다.
/// </summary>
public class NumToWord
{
public NumToWord()
{
//
// TODO: 여기에 생성자 논리를 추가합니다.
//
}
public static string [] strModule = {
"",
"Thousand ",
"Million ",
"Billion ",
"Trillion "
};
public static string [] strOneIntStr = {
"",
"One",
"Two",
"Three",
"Four",
"Five",
"Six",
"Seven",
"Eight",
"Nine"
};
public static string N2W(double DouStr)
{
int inStr = (int)Math.Ceiling(DouStr);
string [] ArrInStr = inStr.ToString("#,###").Split(',');
int iArrInStrCount = inStr.ToString("#,###").Split(',').Length;
string strTemp = string.Empty;
string strReturnStr = "";
for(int i = 0 ; i < iArrInStrCount ; i++ )
{
int intStr = int.Parse(ArrInStr[i]);
strTemp = "";
if(intStr > 99)
{
strTemp = strOneIntStr[(int)Math.Ceiling(intStr / 100)] + "Hundred ";
}
int intStr2 = intStr % 100;
if(intStr2 > 9 && intStr2 < 20)
{
switch(intStr2)
{
case 10: strTemp += "Ten"; break;
case 11: strTemp += "Eleven"; break;
case 12: strTemp += "Twelve"; break;
case 13: strTemp += "Thirteen"; break;
case 14: strTemp += "Fourteen"; break;
case 15: strTemp += "Fifteen"; break;
case 16: strTemp += "Sixteen"; break;
case 17: strTemp += "Seventeen"; break;
case 18: strTemp += "Eighteen"; break;
case 19: strTemp += "Nineteen"; break;
}
}
else
{
switch((int)Math.Ceiling(intStr2 / 10))
{
case 2: strTemp += "Twenty "; break;
case 3: strTemp += "Thirty "; break;
case 4: strTemp += "Forty "; break;
case 5: strTemp += "Fifty "; break;
case 6: strTemp += "Sixty "; break;
case 7: strTemp += "Seventy "; break;
case 8: strTemp += "Eighty "; break;
case 9: strTemp += "Ninety "; break;
}
switch(intStr2 % 10)
{
case 1: strTemp += "One"; break;
case 2: strTemp += "Two"; break;
case 3: strTemp += "Three"; break;
case 4: strTemp += "Four"; break;
case 5: strTemp += "Five"; break;
case 6: strTemp += "Six"; break;
case 7: strTemp += "Seven"; break;
case 8: strTemp += "Eight"; break;
case 9: strTemp += "Nine"; break;
}
}
strReturnStr += strTemp + strModule[ArrInStr.Length - 1 - i];
}
strReturnStr += string.Format(" and {0:00}/100",(int)Math.Ceiling((DouStr * 100) % 100));
return strReturnStr;
}
}
}
'ASP.NET' 카테고리의 다른 글
닷넷 공부에 꽤 큰 도움이 되는 사이트 (0) | 2005.08.23 |
---|---|
Transferring page values to another page (0) | 2005.07.26 |
ASP.NET 마스터하기: 사용자 지정 엔터티 클래스 소개 (0) | 2005.05.21 |
asx 리스트 만들기 | (0) | 2005.05.21 |
GIF 투명 이미지를 만들려 하는데 (0) | 2005.05.13 |