Chào các bạn, hôm nay tuoitreit.vn xin hướng dẫn các bạn chuyển số sang chữ trong C#
Để chuyển số sang chữ bạn viết hàm sau nhé
Gọi hàm bạn sử dụng ChuyenSo(so);
Tham số truyền vào sẽ là string chứa các con số ví dụ so.ToString();
Cách 2:
Cách dùng: ChuyenSoSangChuoi(số)
Ví dụ: ChuyenSoSangChuoi(100)
Chúc bạn thành công!
Để chuyển số sang chữ bạn viết hàm sau nhé
C#:
private string ChuyenSo(string number)
{
string[] dv = { "", "mươi", "trăm", "nghìn", "triệu", "tỉ"};
string[] cs = { "không", "một", "hai", "ba", "bốn", "năm", "sáu", "bảy", "tám", "chín" };
string doc;
int i, j, k, n, len, found, ddv, rd;
len = number.Length;
number += "ss";
doc = "";
found=0;
ddv=0;
rd=0;
i = 0;
while (i < len)
{
//So chu so o hang dang duyet
n = (len - i + 2) % 3 + 1;
//Kiem tra so 0
found = 0;
for (j = 0; j < n; j++)
{
if (number[i + j] != '0')
{
found = 1;
break;
}
}
//Duyet n chu so
if (found == 1)
{
rd = 1;
for (j = 0; j < n; j++)
{
ddv=1;
switch(number[i+j])
{
case '0':
if (n-j==3) doc+=cs[0]+" ";
if (n-j==2)
{
if (number[i+j+1]!='0') doc+="lẻ ";
ddv=0;
}
break;
case '1':
if (n-j==3) doc+=cs[1] + " ";
if (n-j==2)
{
doc+="mười ";
ddv=0;
}
if (n-j==1)
{
if (i + j == 0) k = 0;
else k = i + j - 1;
if (number[k]!='1' && number[k]!='0')
doc += "mốt ";
else
doc+=cs[1]+" ";
}
break;
case '5':
if (i+j==len-1)
doc+="lăm ";
else
doc+=cs[5]+" ";
break;
default:
doc+=cs[(int)number[i+j]-48]+" ";
break;
}
//Doc don vi nho
if (ddv==1)
{
doc+=dv[n-j-1]+" ";
}
}
}
//Doc don vi lon
if (len-i-n>0)
{
if ((len - i - n ) % 9 == 0)
{
if (rd==1)
for (k = 0; k < (len - i - n) / 9; k++)
doc += "tỉ ";
rd=0;
}
else
if (found!=0) doc+=dv[((len-i-n+1)%9)/3+2]+" ";
}
i+=n;
}
if (len == 1)
if (number[0] == '0' || number[0] == '5') return cs[(int)number[0] - 48];
return doc;
}
Tham số truyền vào sẽ là string chứa các con số ví dụ so.ToString();
Cách 2:
C#:
string[] mNumText = "không;một;hai;ba;bốn;năm;sáu;bảy;tám;chín".Split(';');
private string DocHangChuc(double so, bool daydu)
{
string chuoi = "";
//Hàm để lấy số hàng chục ví dụ 21/10 = 2
Int64 chuc = Convert.ToInt64(Math.Floor((double)(so / 10)));
//Lấy số hàng đơn vị bằng phép chia 21 % 10 = 1
Int64 donvi = (Int64)so % 10;
//Nếu số hàng chục tồn tại tức >=20
if (chuc > 1)
{
chuoi = " " + mNumText[chuc] + " mươi";
if (donvi == 1)
{
chuoi += " mốt";
}
}
else if (chuc == 1)
{//Số hàng chục từ 10-19
chuoi = " mười";
if (donvi == 1)
{
chuoi += " một";
}
}
else if (daydu && donvi > 0)
{//Nếu hàng đơn vị khác 0 và có các số hàng trăm ví dụ 101 => thì biến daydu = true => và sẽ đọc một trăm lẻ một
chuoi = " lẻ";
}
if (donvi == 5 && chuc >= 1)
{//Nếu đơn vị là số 5 và có hàng chục thì chuỗi sẽ là " lăm" chứ không phải là " năm"
chuoi += " lăm";
}
else if (donvi > 1 || (donvi == 1 && chuc == 0))
{
chuoi += " " + mNumText[donvi];
}
return chuoi;
}
private string DocHangTram(double so, bool daydu)
{
string chuoi = "";
//Lấy số hàng trăm ví du 434 / 100 = 4 (hàm Floor sẽ làm tròn số nguyên bé nhất)
Int64 tram = Convert.ToInt64(Math.Floor((double)so / 100));
//Lấy phần còn lại của hàng trăm 434 % 100 = 34 (dư 34)
so = so % 100;
if (daydu || tram > 0)
{
chuoi = " " + mNumText[tram] + " trăm";
chuoi += DocHangChuc(so, true);
}
else
{
chuoi = DocHangChuc(so, false);
}
return chuoi;
}
private string DocHangTrieu(double so, bool daydu)
{
string chuoi = "";
//Lấy số hàng triệu
Int64 trieu = Convert.ToInt64(Math.Floor((double)so / 1000000));
//Lấy phần dư sau số hàng triệu ví dụ 2,123,000 => so = 123,000
so = so % 1000000;
if (trieu > 0)
{
chuoi = DocHangTram(trieu, daydu) + " triệu";
daydu = true;
}
//Lấy số hàng nghìn
Int64 nghin = Convert.ToInt64(Math.Floor((double)so / 1000));
//Lấy phần dư sau số hàng nghin
so = so % 1000;
if (nghin > 0)
{
chuoi += DocHangTram(nghin, daydu) + " nghìn";
daydu = true;
}
if (so > 0)
{
chuoi += DocHangTram(so, daydu);
}
return chuoi;
}
public string ChuyenSoSangChuoi(double so)
{
if (so == 0)
return mNumText[0];
string chuoi = "", hauto = "";
Int64 ty;
do
{
//Lấy số hàng tỷ
ty = Convert.ToInt64(Math.Floor((double)so / 1000000000));
//Lấy phần dư sau số hàng tỷ
so = so % 1000000000;
if (ty > 0)
{
chuoi = DocHangTrieu(so, true) + hauto + chuoi;
}
else
{
chuoi = DocHangTrieu(so, false) + hauto + chuoi;
}
hauto = " tỷ";
} while (ty > 0);
return chuoi + " đồng";
}
Ví dụ: ChuyenSoSangChuoi(100)
Chúc bạn thành công!