Professional Documents
Culture Documents
Để thực hiện đọc số thành chữ bạn cần viết hàm đọc số có 3 chữ số trước, Bạn hãy thực hiện
theo các hàm dưới đây.
// Bạn đọc và hiểu được thuật toán thì không khó khăn để chuyển đổi bằng các
ngôn ngữ lập trình khác nhau. Bài sau mình sẽ giới thiệu hàm "đọc tiền bằng
chữ bằng javascript" dùng thuật toán trên
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
namespace hmweb.Services
{
public class cCommonFunction
{
private string[] ChuSo = new string[10] { " không", " một", " hai", "
ba", " bốn", " năm", " sáu", " bẩy", " tám", " chín" };
private string[] Tien = new string[6] { "", " nghìn", " triệu", " tỷ",
" nghìn tỷ", " triệu tỷ" };
// Hàm đọc số thành chữ
public string DocTienBangChu(long SoTien, string strTail)
{
int lan, i;
long so;
string KetQua = "", tmp = "";
int[] ViTri = new int[6];
if (SoTien < 0) return "Số tiền âm !";
if (SoTien == 0) return "Không đồng !";
if (SoTien > 0)
{
so = SoTien;
}
else
{
so = -SoTien;
}
//Kiểm tra số quá lớn
if (SoTien > 8999999999999999)
{
SoTien = 0;
return "";
}
ViTri[5] = (int)(so / 1000000000000000);
so = so - long.Parse(ViTri[5].ToString()) * 1000000000000000;
ViTri[4] = (int)(so / 1000000000000);
so = so - long.Parse(ViTri[4].ToString()) * +1000000000000;
ViTri[3] = (int)(so / 1000000000);
so = so - long.Parse(ViTri[3].ToString()) * 1000000000;
ViTri[2] = (int)(so / 1000000);
ViTri[1] = (int)((so % 1000000) / 1000);
ViTri[0] = (int)(so % 1000);
if (ViTri[5] > 0)
{
lan = 5;
}
else if (ViTri[4] > 0)
{
lan = 4;
}
else if (ViTri[3] > 0)
{
lan = 3;
}
else if (ViTri[2] > 0)
{
lan = 2;
}
else if (ViTri[1] > 0)
{
lan = 1;
}
else
{
lan = 0;
}
for (i = lan; i >= 0; i--)
{
tmp = DocSo3ChuSo(ViTri[i]);
KetQua += tmp;
if (ViTri[i] != 0) KetQua += Tien[i];
if ((i > 0) && (!string.IsNullOrEmpty(tmp))) KetQua +=
",";//&& (!string.IsNullOrEmpty(tmp))
}
if (KetQua.Substring(KetQua.Length - 1, 1) == ",") KetQua =
KetQua.Substring(0, KetQua.Length - 1);
KetQua = KetQua.Trim() + strTail;
return KetQua.Substring(0, 1).ToUpper() + KetQua.Substring(1);
}