Từ 1 tới 2 trên tổng số 2 kết quả

Đề tài: Chuyển tiền số sang chữ trên C#

  1. #1
    Ngày gia nhập
    04 2010
    Nơi ở
    Gò Vấp, HCMC
    Bài viết
    278

    Mặc định Chuyển tiền số sang chữ trên C#

    Của Ceasar thì trả lại cho Ceasar.
    Mình có tham khảo code này từ nhiều nguồn, trong đó có
    http://diendan.congdongcviet.com/threads/t58649::code-chuyen-tien-so-sang-chu-tren-csharp.cpp
    Tất nhiên peformance không được tốt, code lại không clean và clear.
    Mình share mã nguồn của mình, bao gồm:

    Source Code C# viết bằng VS2K5 (để tiện cho các bạn có thể sử dụng trên mọi phiên bản VS, mình đang xài VS 2k15 ==]])

    Source code MSSQL server viết trên phiên bản MSSQL Server 2008 (bản 2k5 mình chưa test, mà thấy các công ty ở VN lên 2k8 hết rồi), để tiện cho các bạn làm report

    Thuật toán (cái này mình viết tiếng Anh, nguyên nhân vì sao thì các bạn đừng thắc mắc, mình lười dịch lại tiếng Việt)

    This is the concept for the Vietnamese class

    Input: number_input: integer
    Output: str_ouput: string value of number in Vietnamese

    ie: input: 123456
    output: một trăm hai mươi ba ngàn bốn trăm năm mươi sáu

    Algo:

    Step 1:from the right to the left of the string, group every three digits into group name
    i.e: 12345678 ==>> 12; 345; 678

    Step 2-1: with each group, we define the name of the group coresponding:
    "", // less than 1E3 (nothing to call)
    "ngàn", //1E3
    "triệu", //1E6
    "tỷ", //1E9
    "nghìn tỷ", //1E12
    "triệu tỷ", //1E15
    "tỷ tỷ" //1E18
    i.e: "678" ==>> ""
    "345" ==>> "ngàn",
    "12" ==>> "triệu"
    then "12345678" ==>> "12 triệu 345 ngàn 678"

    if the group value is 0, just ignore it
    ie: 12000678 ==>> "12 triệu 000 ngàn 678" , just ignore the "000", we have : "12 triệu 678"
    with 12000678 we have "12 triệu"


    Step 2-2:
    with each group, we continue to define the unit, the tenth and the hundreds
    i.e: "6" ==>> hundeds
    "7" ==>> tenth
    "8" ==>> unit
    ingeneral, the hundeds call "trăm", the tenth call "mươi", and the unit has not to call
    for example
    "678" ==>> 6 trăm 7 mươi 8

    and we call the digits in this way: "không", //0
    "một", //1
    "hai", //2
    "ba", //3
    "bốn", //4
    "năm", //5
    "sáu", //6
    "bảy", //7
    "tám", //8
    "chín" //9
    "678" ==>> sáu trăm bảy mươi tám

    here is some special rules in Vietnamese:

    r1 - if the unit is 0, the tenth or the hundeds is not 0, just ignore it
    i.e: 20 : "hai mươi", not "hai mươi không"
    120 : "một trăm hai mươi", not "một trăm hai mươi không"

    r2.1 - if the tenth is 0, the hundeds is not 0
    with the unit is 0, ignore the tenth and the unit
    i.e: 100: "một trăm", not "một trăm không mươi"

    with the unit is not 0, the tenth text changes from "không mươi" to "lẻ"
    ie: 101: "một trăm lẻ một", not "một trăm không mươi một"

    r2.2 - if the tenth is 1 the tenth text changes from "một mươi" to "mười"
    i.e: 10: "mười", not "một mươi"
    11: "mười một", not "một mươi một"
    12: "mười hai", not "một mươi hai"

    r2.3 - if the tenth is greater than 1
    the unit "1" text changes from "một" to "mốt"
    ie: 21: "hai mươi mốt", not "hai mươi một"

    the unit "5" text changes from "năm" to "lăm"
    ie: 25: "hai mươi lăm", not "hai mươi năm"

    And now we have the result
    12345678 ==>> "mười hai triệu ba trăm bốn mươi lăm ngàn sáu trăm bảy mươi tám"
    91000002345 ==>> "chín mươi mốt tỷ không trăm lẻ hai ngàn ba trăm bốn mươi lăm"
    Attached Files Attached Files
    Đã được chỉnh sửa lần cuối bởi yscytd : 13-07-2017 lúc 08:44 AM. Lý do: Change [Tex] to [Quote]
    Hoa Tử Đinh Hương Phụng Vũ Phi Y
    Skype: makemecryhp
    Email: makemecryhp@gmail.com
    Face : fb.com/yescaerosta

  2. #2
    Ngày gia nhập
    12 2010
    Bài viết
    97

    Bạn không up luôn vào pic cũ mọi người bình luận cho xôm

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn