• Downloading from our site will require you to have a paid membership. Upgrade to a Premium Membership from 10$ a month today!

    Dont forget read our Rules! Also anyone caught Sharing this content will be banned. By using this site you are agreeing to our rules so read them. Saying I did not know is simply not an excuse! You have been warned.

Hướng dẫn chuyển số sang chữ C#

Admin

Well-Known Member
Staff member
Administrator
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#
49816538187_b028b232f6_o.png

Để 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;
}
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#:
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";
        }
Cách dùng: ChuyenSoSangChuoi(số)
Ví dụ: ChuyenSoSangChuoi(100)
Chúc bạn thành công!
 

Facebook Comments

Similar threads
Thread starter Title Forum Replies Date
tunglamed Bùng nổ Chuyển mạng giữ số sang Mobifone vì gói cước C120 Điện thoại di động 4
B Ưu đãi đặc biệt khi chuyển mạng giữ số sang MobiFone Thông tin các mạng di động 2
B Hướng dẫn Chuyển mạng giữ số cho thuê bao trả trước sang MobiFone Thông tin các mạng di động 2
B Tin nóng - chuyển mạng giữ số sang Mobifone ngay tại nhà Thông tin các mạng di động 2
N Trải nghiệm các gói cước trả sau cho thuê bao chuyển mạng giữ số sang mạng Mobifone Thông tin các mạng di động 10
B Tặng 25% cước tiêu dùng khi chuyển mạng giữ số sang MobiFone Thông tin các mạng di động 2
tunglamed Hướng dẫn chuyển mạng giữ số sang Mobifone tại nhà Thông tin các mạng di động 2
N Cách chuyển mạng giữ số từ nhà mạng khác sang MobiFone Thông tin các mạng di động 2
tunglamed Chuyển mạng giữ số - Ưu đãi lớn cho khách hàng khi chuyển sang sử dụng dịch vụ MobiFone Thông tin các mạng di động 10
N Tổng hợp ưu đãi cho thuê bao trả trước chuyển mạng giữ số qua MobiFone Thông tin các mạng di động 2
N Mobifone triển khai gói cước MFC99 cho thuê bao trả sau Chuyển mạng giữ số Thông tin các mạng di động 2
P Phần mềm PC Leawo Prof. Media 8.0.0 - Phần mềm chuyển đổi video số 1 thế giới Phần mềm 0
tunglamed Mobifone triển khai chuyển đổi đầu số đợt cuối vào ngày 02/10/2018 Thông tin các mạng di động 2
tunglamed Mobifone tiếp tục chuyển đổi đầu số 0126 về đầu số 076 vào ngày 28/09/2018 Thông tin các mạng di động 2
B Mobifone chuyển đổi đầu số 0122 về đầu số 077 vào ngày 25/9/2018 Thông tin các mạng di động 2
tunglamed Mobifone sẽ chuyển đổi đầu số 0121 về đầu số 079 vào ngày 21/9/2018 Thông tin các mạng di động 2
B Kế hoạch chuyển đổi thuê bao 11 số thành 10 số của MobiFone Thông tin các mạng di động 2
tunglamed Kế hoạch chuyển đổi thuê bao 11 số thành 10 số của Mobifone Thông tin các mạng di động 2
Admin Share code php chuyển đổi các hệ cơ số PHP 0
Admin Phê duyệt đề án triển khai dịch vụ chuyển mạng thông tin di động giữ nguyên số thuê bao tại Việt Nam Tin tức CNTT 5
Admin Wondershare Video Converter Ultimate - Công cụ chuyển đổi video kĩ thuật số Phần mềm 0
Admin Miễn phí Video Converter: Mp4 to Audio 49.99$ - Chuyển đổi video sang âm thanh miễn phí cho iOS Android, iOS 0
katy MobiFone tặng gói cước 360GB data cho khách hàng khi chuyển đổi lên smartphone Thông tin các mạng di động 4
katy Android MobiFone tặng gói cước 360GB data cho khách hàng khi chuyển đổi lên smartphone Thông tin các mạng di động 6
tunglamed Chuyển tiền qua App My Mobifone - Đơn giản - nhanh chóng - an toàn - tiết kiệm Điện thoại di động 3
tunglamed MobiFone triển khai gói data chuyển vùng quốc tế Roam Plus (RP1) Điện thoại di động 0
tunglamed Chuyển tiền liền tay – Ngất ngây ưu đãi trên MobiFone NEXT Điện thoại di động 0
B MobiFone tặng ưu đãi khủng cho thuê bao chuyển từ trả trước sang trả sau Thông tin các mạng di động 2
N MobiFone ưu đãi khủng cho KH chuyển từ trả trước sang trả sau Thông tin các mạng di động 11
Admin Chuyển vùng Apple ID sang Canada, Mỹ, Singapore, Trung Quốc - Fake Address For Apple ID US, Canada, Singapore, China, Hong Kong... Android, iOS 0
B Những ưu đãi “vàng” dành cho thuê bao chuyển mạng sang MobiFone Thông tin các mạng di động 2
T Blockchain chuyển tiền rất nhanh chóng Tin tức CNTT 0
P Phần mềm PC First PDF v4.3 - Phần mềm chuyển đổi file PDF sang Word Phần mềm 0
N Ưu đãi lớn cho khách hàng khi chuyển sang sử dụng dịch vụ MobiFone Thông tin các mạng di động 2
Admin Hướng dẫn chuyển thanks từ vbulletin sang xenforo 1.5.x - Convert thanks vbulletin to like xenforo 1.5.x Xenforo 2
tunglamed MobiFone Next cung cấp tính năng Chuyển tiền nhanh Thông tin các mạng di động 2
Admin Hướng dẫn chuyển hướng https://www sang https:// trên nginx và ngược lại đơn giản VPS & Dedicated Server 0
M Share Vận chuyển hàng đi Đà Nẵng giá rẻ Thảo luận SEO 0
M Thảo luận Dịch vụ vận chuyển tủ kệ trưng bày sản phẩm uy tín Thảo luận SEO 0
B Dịch vụ Chuyển vùng quốc tế “Đi khắp thế gian” của Mobifone Thông tin các mạng di động 1
P Phần mềm PC Wondershare Video Converter Ultimate 10.0.2.64 - Phần mềm chuyển đổi video Phần mềm 0
P Foxit PhantomPDF Business 8.3.0.14878 Portable - Phần mềm đọc, chỉnh sửa và chuyển đổi file PDF Phần mềm 0
A Thị trường dự án căn hộ quận 4 đang bắt đầu "chuyển mình" Tin tức, sự kiện thường ngày 1
P Wondershare Video Converter Ultimate 9.0.1 full - Phần mềm chuyển đổi video Phần mềm 0
P Phần mềm PC Foxit PhantomPDF Business 8.2.0.2192 - Phần mềm đọc, chỉnh sửa và chuyển đổi file PDF Phần mềm 0
P Phần mềm PC First PDF v4.1 - Phần mềm chuyển đổi file PDF sang Word và các định dạng khác Phần mềm 1
A Dịch vụ vận chuyển hàng hoá từ Hà Nội vào HCM Trò chuyện linh tinh 0
A Dịch vụ vận chuyển hàng bao bì đi Hà Nội Trò chuyện linh tinh 0
T Chuyển vùng quốc tế - Gói Roam Saver Thông tin các mạng di động 3
tunglamed Chuyển vùng quốc tế - Gói Roam Saver Thông tin các mạng di động 6

Similar threads

New posts New threads New resources

Back
Top