Cấp bậc tác giả:

DOTNET

Hàm đọc số bằng chữ - C#

Được viết bởi QuangIT ngày 13/08/2012 lúc 07:46 PM
Khi lập trình có liên quan đến số liệu phải tính toán và yêu cầu phải đọc được số thành chữ như đọc tiền bằng chữ, Bài này sẽ hướng dẫn bạn viết hàm bằng C#
  • 0
  • 18374

Hàm đọc số bằng chữ - C#

Khi lập trình có liên quan đến số liệu phải tính toán và yêu cầu phải đọc được số thành chữ như đọc tiền bằng chữ, Bài này sẽ hướng dẫn bạn viết hàm bằng C#
Để 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);
        }

        // Hàm đọc số có 3 chữ số
        private string DocSo3ChuSo(int baso)
        {
            int tram, chuc, donvi;
            string KetQua = "";
            tram = (int)(baso / 100);
            chuc = (int)((baso % 100) / 10);
            donvi = baso % 10;
            if ((tram == 0) && (chuc == 0) && (donvi == 0)) return "";
            if (tram != 0)
            {
                KetQua += ChuSo[tram] + " trăm";
                if ((chuc == 0) && (donvi != 0)) KetQua += " linh";
            }
            if ((chuc != 0) && (chuc != 1))
            {
                KetQua += ChuSo[chuc] + " mươi";
                if ((chuc == 0) && (donvi != 0)) KetQua = KetQua + " linh";
            }
            if (chuc == 1) KetQua += " mười";
            switch (donvi)|
            {
                case 1:
                    if ((chuc != 0) && (chuc != 1))
                    {
                        KetQua += " mốt";
                    }
                    else
                    {
                        KetQua += ChuSo[donvi];
                    }
                    break;
                case 5:
                    if (chuc == 0)
                    {
                        KetQua += ChuSo[donvi];
                    }
                    else
                    {
                        KetQua += " lăm";
                    }
                    break;
                default:
                    if (donvi != 0)
                    {
                        KetQua += ChuSo[donvi];
                    }
                    break;
            }
            return KetQua;
        }
    }
}

Nguồn bài viết: Dngaz.com

BÌNH LUẬN BÀI VIẾT

Bài viết mới nhất

LIKE BOX

Bài viết được xem nhiều nhất

HỌC HTML