Chuyển đổi Số Thành Chuỗi Trong C# | Tìm ở đây

Skip to content
  • .Net / Khoá học
  • 12
Chuyển số thành chuỗi bằng C#

Giới thiệu bài toán

Bài toán chuyển số thành chuỗi bạn sẽ hay gặp trong những phần mềm chuyên dụng như phần mềm bán hàng, phần mềm kế toán, quản lý kho … để in số tiền hoặc các con số ra dạng tường mình dạng chuỗi. Ví dụ: 123 sẽ in ra thành “một trăm hai ba” Trước khi bạn bắt tay vào lập trình, chúng ta phân tích một chút để tìm ra quy luật của bài toán: Ví dụ: 123 => một trăm hai ba 567,123 => năm trăm sáu bảy nghìn một trăm hai ba 890,567,123 => tám trăm chín mươi triệu năm trăm sáu bảy nghìn một trăm hai ba …. Bạn sẽ thấy quy luật đều bắt nguồn từ phần cơ sở là hàng trăm, hàng chục và hàng đơn vị. Các con số hàng nghìn, hàng triệu, hàng tỷ … đều được sinh theo quy luật như trên.

Code thuật toán chuyển số thành xâu

//123 => một trăm hai ba đồng //1,123,000=>một triệu một trăm hai ba nghìn đồng //1,123,345,000 => một tỉ một trăm hai ba triệu ba trăm bốn lăm ngàn đồng string [] mNumText = "không;một;hai;ba;bốn;năm;sáu;bảy;tám;chín".Split(';'); //Viết hàm chuyển số hàng chục, giá trị truyền vào là số cần chuyển và một biến đọc phần lẻ hay không ví dụ 101 => một trăm lẻ một 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 = DocHanTram(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"; } }

Xem chi tiết trong Video

Tags: .NETC#lập trình C#

  • Next story Tổng quan về SharePoint
  • Previous story Khoá học SharePoint

You may also like...

  • Khoá học C# 0

    Bài tập câu lệnh điều kiện switch case

    15/02/2016

    by Phan Tiến · Published 15/02/2016 · Last modified 07/11/2019

  • Nút Properties 0

    Quản lí tệp và thư mục

    09/10/2015

    by Phan Tiến · Published 09/10/2015 · Last modified 20/06/2024

  • Khoá học về html5 5

    Bài 44: Kéo – thả (Drag/ Drop) trong HTML5

    26/11/2016

    by Trịnh Hồng · Published 26/11/2016 · Last modified 28/11/2016

12 Responses

  • Comments12
  • Pingbacks0
  1. Hoàng viết: 01/06/2020 lúc 8:39 chiều

    Hàm này add vào đâu thầy ơi. em add vào funtion không được.

    Đăng nhập để bình luận
    • Phan Tiến viết: 02/06/2020 lúc 9:07 sáng

      Nếu em làm riêng trên form, thì em add trực tiếp đoạn code này vào form em đang làm. Còn trường hợp em viết một lớp Functions riêng thì em cần xem trong video đoạn này: https://youtu.be/NcgTNOdBaeE?t=2461

      Đăng nhập để bình luận
  2. Hoàng viết: 01/06/2020 lúc 8:45 chiều

    Em t hêm vào và chạy nó báo lỗi: System.NotImplementedException: ‘The method or operation is not implemented.’

    Đăng nhập để bình luận
  3. Tài viết: 20/07/2020 lúc 3:38 chiều

    if (ty > 0) { chuoi = DocHangTrieu(so, true) + hauto + chuoi; } else { chuoi = DocHangTrieu(so, false) + hauto + chuoi; } -> chỗ này chưa đúng với trường hợp tiền tỷ

    Đăng nhập để bình luận
    • Tài viết: 20/07/2020 lúc 3:40 chiều

      3,118,024,647.38 Một trăm mười tám triệu không trăm hai mươi bốn nghìn sáu trăm bốn mươi bảy tỷ một trăm mười tám triệu không trăm hai mươi bốn nghìn sáu trăm bốn mươi bảy đồng

      Đăng nhập để bình luận
      • Phan Tiến viết: 20/07/2020 lúc 6:10 chiều

        Bạn thử thay thế đoạn code sau:

        public static 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) { hauto = " tỷ"; chuoi = DocHangTrieu(ty, false) + hauto + DocHangTrieu(so,false); } else { chuoi = DocHangTrieu(so, false);// + hauto + chuoi; } //} while (ty > 0); return chuoi + " đồng"; } Đăng nhập để bình luận
  4. Đạt viết: 29/09/2020 lúc 5:21 chiều

    thầy ơi cho em hỏi với ạ e, làm đến form hóa đơn em xem video của thầy em chỉnh lỗi lưu hóa đơn nhưng khi làm theo thầy thì em lại bị lỗi này ạ hình https://drive.google.com/file/d/1WPVIxvQN82bx4uY9sIZGtei5laNhyEOh/view?usp=sharing và sau đó khi em ấn ok thì bị lỗi này ạ https://drive.google.com/file/d/19McdQPyrZ6-2GE-xLovWwm7BknZ4TtXu/view?usp=sharing và trong phần in ra ex thì em lại bị lỗi này ạ https://drive.google.com/file/d/1n4RtT9xZj2UBTuDrZiyZVbimPh177eds/view?usp=sharing thầy có thể giúp em dc luôn vid mai em phải nộp rồi ạ em cảm ơn thầy nhiều ạ

    Đăng nhập để bình luận
    • Cường viết: 28/11/2020 lúc 1:16 chiều

      Lỗi hình thứ 1 là chuỗi ký tự nhập vào dài hơn số ký tự đã khai báo cột trong SQL. Lỗi hình thứ 2 là Chuỗi SQL sai định dạng format, kiểm tra lại chuỗi sau khi truyền biến vào. Lỗi hình thứ 3 là Câu truy vấn của bạn không có kết quả trả về, vấn đề này bạn phải ràng buộc lại nhé, (nếu tblThongTinHD.Rows.Count > 0 thì mới có thể gọi dòng tblThongTinHD.Rows[0][0] được)

      Đăng nhập để bình luận
  5. Ái viết: 25/03/2021 lúc 1:52 sáng

    Em làm bài này trên giao diện WPF ạ. Mặc dù chương trình không hiện lỗi nhưng khi chạy chương trình thì button của em bị lỗi ạ. Mong thầy giúp đỡ ạ. Đây là link ảnh ạ: https://drive.google.com/file/d/1fWxTP5CSZ5ShkBHaYWU0QTwMd7R3JILD/view

    Đăng nhập để bình luận
  6. ngo da nhan viết: 28/04/2021 lúc 11:18 sáng

    em coppy paste bi loi nhu v a loi 1 Severity Code Description Project File Line Suppression State Error CS5001 Program does not contain a static ‘Main’ method suitable for an entry point baibon C:\Users\SV\source\repos\bai1\baibon\CSC 1 Active

    Đăng nhập để bình luận
    • Phan Tiến viết: 28/04/2021 lúc 6:16 chiều

      Em xem video hướng dẫn ý. Như trường hợp của em, hình như em bị xoá mất function Main rồi

      Đăng nhập để bình luận
  7. Đức Tuấn viết: 06/08/2021 lúc 9:31 chiều

    Em có đoạn javaScript này. Mọi người có thể chuyển sang C# được ko ạ? Mọi người giúp đỡ. Đây cũng là code đọc sô rút tiền rút gọn Ví du: 5.000.000.000 thì sẽ ra kết quả là 5 tỷ

    Code isNumber: function (number) { for (var i = 0; i = “0” && temp 0 && parseInt(price, 0) > 900000000) { if (priceTrieu > 0) { getTrieu = “,” + priceTrieu / 100; } else { getTrieu = ”; } strTextPrice = strTextPrice + priceTy + getTrieu + ” Tỷ “; } if (priceTy == 0 && priceTrieu > 0) { if (priceNgan > 0) { getNgan = “,” + priceNgan / 100; } else { getNgan = ”; } strTextPrice = strTextPrice + priceTrieu + getNgan + ” Triệu “; } if (priceTrieu == 0 && priceNgan > 0) { if (priceDong > 0) { getDong = “,” + priceDong / 100; } else { getDong = ”; } strTextPrice = strTextPrice + priceNgan + getDong + ” Ngàn “; } if (priceNgan == 0 && priceDong > 0) { strTextPrice = strTextPrice + priceDong + ” Đồng”; }

    strTextPrice = strTextPrice.replace(/\./g, “”); return strTextPrice; },

    Đăng nhập để bình luận

Để lại một bình luận Hủy

Bạn phải đăng nhập để gửi bình luận.

Follow:

  • Recent Posts
  • Popular Posts
  • Recent Comments
  • Tags
  • sqlite

    Khoá học / SQLite

    Bài 2: Cài đặt công cụ và Làm quen với DB Browser for SQLite

    17/12/2025

  • sqlite

    Khoá học / SQLite

    Bài 1: Tổng quan về SQLite – Cơ sở dữ liệu nhỏ gọn nhưng mạnh mẽ

    14/12/2025

  • Học Python

    Khoa học dữ liệu

    Hướng dẫn tạo môi trường ảo Python trên Windows và MacOs

    06/12/2024

  • Lập trình Java căn bản

    Lập trình Java

    Bài 7: Nhập/Xuất trong Java

    28/11/2024

  • Lập trình Java căn bản

    Lập trình Java

    Bài 6: Chuyển đổi kiểu dữ liệu

    25/11/2024

  • Lập trình Java căn bản

    Lập trình Java

    Bài 5: Biến và kiểu dữ liệu trong Java

    22/11/2024

  • Lập trình Java căn bản

    Lập trình Java

    Bài 4: Tạo dự án Java đầu tiên bằng IntelliJ

    19/11/2024

  • Lập trình Java căn bản

    Lập trình Java

    Bài 3: Cài đặt IntelliJ – IDE tốt nhất cho Java

    19/11/2024

  • Lập trình Java căn bản

    Lập trình Java

    Bài 2: Cài đặt JDK – Java Development Kit

    18/11/2024

  • Lập trình Java căn bản

    Lập trình Java

    Bài 1: Giới thiệu về ngôn ngữ lập trình Java

    18/11/2024

  • python pyqt

    PyQt6 và Qt Designer

    Tìm hiểu về QLineEdit trong PyQt6

    04/11/2024

  • python pyqt

    PyQt6 và Qt Designer

    Tìm hiểu về QPushButton trong PyQt6

    21/10/2024

  • python pyqt

    PyQt6 và Qt Designer

    Tìm hiểu về QLabel trong PyQt6

    17/10/2024

  • python pyqt

    PyQt6 và Qt Designer

    Giới thiệu Signals và Slots trong PyQt

    12/09/2024

  • Trò chơi Hamster Kombat

    Tin tức

    Với 250 triệu người chơi, Hamster Kombat đang là mục tiêu tấn công của phần mềm độc hại

    24/07/2024

  • Màn hình xanh chết chóc

    Tin tức

    Màn hình xanh chết chóc (Blue Screen) là gì?

    21/07/2024

  • Cách bảo vệ an toàn trên Internet

    Tin tức

    Khuyến nghị để đảm bảo an toàn thông tin khi truy cập Internet

    19/07/2024

  • python pyqt

    PyQt6 và Qt Designer

    PyQt6 Hello World

    15/07/2024

  • python pyqt

    PyQt6 và Qt Designer

    Giới thiệu về công cụ Qt Designer

    11/07/2024

  • python pyqt

    PyQt6 và Qt Designer

    Giới thiệu về thư viện PyQt6

    04/07/2024

  • Phan Tiến says: Em search thư viện này trên google rồi tải về, để...
  • [email protected] says: Bản 64bit bị thiếu file MTCH.dll thầy ơi
  • bichhuynh says: dạ anh ơi cho em hỏi chức năng doubleclick ở form...
  • Giới thiệu về thư viện PyQt6 | Tìm ở đây says: […] Trước khi bắt đầu lập trình xây dựng giao diện...
  • Xác thực Password với biểu thức chính quy (Regular Expression) trong Python | Tìm ở đây says: […] bài viết trước, ta được tìm hiểu về cách Xác...
  • Minh Nguyen says: Cho em hỏi là em code giống vs mẫu sao lúc...
  • zsaka2003 says: còn mục hàng tồn và doanh thu đâu ạ??
  • zsaka2003 says: thưa thầy em gặp phải lỗi như bên dưới thì sửa...
  • Phan Tiến says: Theo em số nào số lẻ? Nếu em kiểm tra được...
  • nha says: Dạ em chào thầy em đang làm đề tài này,thầy cho...
  • viet5121198 says: Thầy ơi em bị ntn làm cách nào để sửa ạ...
  • Phan Tiến says: Mình đang hiểu bạn đang hỏi về hệ quản trị cơ...
  • Bài 9: Biến và câu lệnh khai báo biến | Tìm ở đây says: […] kiểu dữ liệu cho biến sao cho phù hợp. <tên...
  • NinhAql says: Cho em hỏi là bài này mình sử dụng cấu trúc...
  • Bài 5: Cấu trúc chung của chương trình C++ | Tìm ở đây says: […] Xét lại chương trình đầu tiên được nhắc đến trong...
  • thinhbsua123 says: gán hết rồi vẫn bị ạ
  • sondinh03 says: EM muốn đăng ký thì phải làm gì ạ?
  • kuchiba123 says: Dạ anh ơi cho em hỏi lỗi lúc e chạy thử...
  • thanhlam212 says: Bài giảng rất đầy đủ và dễ hiểu ạ, mong thầy...
  • tien_tx1210 says: thầy ơi, thầy xem giúp em lỗi này là bị gì...
  • .NET C# Computer Graphic CSS Công nghệ phần mềm GIS Google Classroom google maps html html5 học css Học lập trình học python Java JavaScript kiểm thử cho thiết bị di động Kiểm thử phần mềm lap trinh lập trình C# lập trình C/C++ lập trình cơ sở dữ liệu Lập trình Java Lập trình phân tán lập trình python lập trình scratch Lập trình đồ hoạ máy tính MS Excel ngôn ngữ C OpenGL PHP phát triển phần mềm Phần mềm học trực tuyến python Sharepoint SQL SQL Server Sử dụng mảng CSharp T-SQL testing application testing mobile thủ thuật Excel tin học ứng dụng Tính toán song song xử lý số liệu Đồ hoạ máy tính

More

Danh mục

  • .Net (39)
  • Access (1)
  • Android (2)
  • API (1)
  • Bài báo (2)
  • Bài tập C/C++ (9)
  • Bài tập Java (43)
  • Bài tập Python (24)
  • Cấu trúc dữ liệu và giải thuật (1)
  • CSS (49)
  • Demo (1)
  • Excel (31)
  • GIS (14)
  • Google Maps (7)
  • Học lập trình Python (2)
  • Học Lập trình qua Project (5)
  • HTML (55)
  • JavaScript (4)
  • Khoá học (218)
  • Khoa học dữ liệu (1)
  • Kiểm thử phần mềm (15)
  • Kiểm thử ứng dụng di động (3)
  • Lập trình C (26)
  • Lập trình C++ (9)
  • Lập trình Java (7)
  • Lập trình Mobile (2)
  • Lập trình Scratch (15)
  • Learning English (1)
  • Nghiên cứu (5)
  • Phát triển ứng dụng (2)
  • Phát triển ứng dụng WEB (1)
  • PHP (12)
  • PowerPoint (4)
  • PyQt6 và Qt Designer (7)
  • Python (6)
  • Sách, bài giảng (25)
  • SEO (1)
  • Sharepoint (4)
  • SQL (22)
  • SQLite (2)
  • Tài liệu (24)
  • Thư giãn (8)
  • Thủ thuật (33)
  • Tin học văn phòng (44)
  • Tin học đại cương (9)
  • Tin tức (31)
  • Tính toán phân tán (3)
  • Tính toán song song (7)
  • Tổng hợp (3)
  • Tuyển sinh – Việc làm (2)
  • Word (5)
  • Xử lý ngôn ngữ (4)
  • Đồ hoạ máy tính (3)

Từ khóa » đọc Số Thành Chữ C#