• Cần giúp đỡ chuyển số có thập phân ra chữ
  • RE: Cần giúp đỡ chuyển số có thập phân ra chữ

    jeck09nt > 20-09-16, 10:11 AM

    Mình thực hiện được rồi, do đặt tên modules trùng với tên Function là "TienDL" nên báo lỗi !
  • RE: Cần giúp đỡ chuyển số có thập phân ra chữ

    vuthaiha90 > 07-11-16, 11:23 AM

    (16-09-16, 04:43 PM)maidinhdan Đã viết:
    (16-09-16, 10:05 AM)ledangvan Đã viết: Cảm ơn Nguyen Hoang Diep
    Tuy nhiên kết quả dịch ra chưa được theo ý muốn, ví dụ : 12800,4 kết quả dịch ra là : Mười hai nghìn tám trăm phẩy bốn mươi đồng.

    Mình muốn kết quả dịch là : Mười hai nghìn, tám trăm phẩy bốn đồng. (Tách dấu phẩy và phần sau dấu phẩy thể hiện là phẩy bốn chứ không phải phẩy bốn mươi)

    Rất mong bạn trợ giúp

    Xin tham gia 1 bài:

    Gửi anh Code này:


    Mã PHP:
    Public Function Docso2(Number As Double)
        Dim MyArray
        Dim Str 
    As String
        
    If Number >= 1E+18 Then Docso2 "#NUM!": Exit Function
        Str Format(Fix(Abs(Number)), "000000000000000000")
        MyArray = Array("không ""m" ChrW(7897) & "t ""hai ""ba ""b" ChrW(7889) & "n ""n" ChrW(259) & "m ""sáu ""b" ChrW(7843) & "y ""tám ""chín ""tri" ChrW(7879) & "u, ""ngàn, ""t" ChrW(7927) & ", ""tri" ChrW(7879) & "u, ""ngàn, """"tr" ChrW(259) & "m ""m" ChrW(432) & ChrW(417) & "i ""không " "m" ChrW(432) & ChrW(417) & "i" " không ""không " "m" ChrW(432) & ChrW(417) & "i""l" ChrW(7867), "m" ChrW(432) & ChrW(417) & "i" " không""m" ChrW(432) & ChrW(417) & "i""m" ChrW(432) & ChrW(417) & "i" " n" ChrW(259) & "m""m" ChrW(432) & ChrW(417) & "i" " l" ChrW(259) & "m""m" ChrW(7897) & "t " "m" ChrW(432) & ChrW(417) & "i""m" ChrW(432) & ChrW(7901) & "i""m" ChrW(432) & ChrW(417) & "i" " m" ChrW(7897) & "t""m" ChrW(432) & ChrW(417) & "i" " m" ChrW(7889) & "t""Âm "ChrW(273) & ChrW(7891) & "ng "" ph" ChrW(7849) & "y ""xu ")
        For 1 To Len(Str)
            If Left(Stri) <> And Mid(Str, (Int((2) / 3) - 1) * 13) <> 0 Then
                Docso2 
    Docso2 MyArray(Mid(Stri1)) & MyArray(-(3) * (i Mod 3 0) - (15 i Mod 3) * (i Mod 3 <> 0))
            ElseIf And Mid(Str73) = And Left(Str6) <> 0 Then
                Docso2 
    Docso2 MyArray(12)
            End If
        Next
        Docso2 
    IIf(Number 0MyArray(0) & MyArray(30), "") & IIf(Fix(Number) <> 0Docso2 MyArray(30), "") & IIf(Fix(Number) <> And Fix(Number) <> NumberMyArray(31), "") & IIf(Fix(Number) <> NumberIIf(Abs(Number Fix(Number)) < 0.1""MyArray(Left(Right(Format(Abs(Number), "#.00"), 2), 1)) & MyArray(17)) & MyArray(Right(Format(Number"#.00"), 1)) & MyArray(32), "")
        Docso2 Replace(Trim(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Docso2MyArray(18), MyArray(15)), MyArray(19), MyArray(20)), MyArray(21), MyArray(22)), MyArray(23), MyArray(24)), MyArray(25), MyArray(26)), MyArray(27), MyArray(28)), ", " MyArray(30), " " MyArray(30))), MyArray(30) & MyArray(31), Split(MyArray(30), " ")(0) & " " MyArray(31))
        If Number 0 Then Docso2 MyArray(29) & Docso2
        Docso2 
    UCase(Left(Docso21)) & Mid(Docso22) & "."
    End Function 

    Ví dụ:
    + 100,000,500.25  :  Một trăm triệu, năm trăm đồng  phẩy hai mươi lăm xu.
    +   10,250,000.51  :   Mười triệu, hai trăm năm mươi ngàn đồng  phẩy năm mươi mốt xu.
    +          10,500.20  :   Mười ngàn, năm trăm đồng  phẩy hai mươi xu. ( Trường hợp .20 Xu không muốn hiện chữ " hai mươi xu" thì thay đoạn cuối cùng Mid(Docso2, 2) = > Mid(Docso2, 1) nhưng phải chèn thêm hàm if cho tương xứng khi bắt điều kiện

    Chú ý dòng: MyArray = Array...  ( Mãng MyArray có tất cả 31 phần tử. thứ tự thì anh tự tùy biến dựa vào 31 phần tử này), Theo mình với đoạn code này nên thay phần tử thứ 30 (" ph" & ChrW(7849) & "y ") thành chữ "và " là hay nhất. Và nó sẽ cho kết quả như sau:

    + 1,005,000.13 : Một triệu, không trăm lẻ năm ngàn đồng mười ba xu.
    +      12,800.40  : Mười hai ngàn, tám trăm đồng  bốn mươi xu.


    Thân mến!

    Bác Dân ơi, em xin phép lục lại bài này, code trên em sửa lại một chút để đọc thành mét vuông (không dùng chữ "đồng" và chữ "xu") nhưng bị vướng 1 chỗ là khi đọc số ví dụ như 100,25 thì đọc đúng là một trăm phẩy hai mươi lăm nhưng diện tích của em nhiều khi là VD: 156,8 thì nó đọc là một trăm năm mươi sáu phẩy tám mươi. Em muốn bỏ chữ mươi kia đi khi mà có 1 số thập phân, còn 2 số thập phân vẫn đọc nguyên như cũ. Mà không biết sửa vào chỗ nào. Bác sửa code lại hộ em được không
  • RE: Cần giúp đỡ chuyển số có thập phân ra chữ

    maidinhdan > 07-11-16, 03:56 PM

    (07-11-16, 11:23 AM)vuthaiha90 Đã viết: Bác Dân ơi, em xin phép lục lại bài này, code trên em sửa lại một chút để đọc thành mét vuông (không dùng chữ "đồng" và chữ "xu") nhưng bị vướng 1 chỗ là khi đọc số ví dụ như 100,25 thì đọc đúng là một trăm phẩy hai mươi lăm nhưng diện tích của em nhiều khi là VD: 156,8 thì nó đọc là một trăm năm mươi sáu phẩy tám mươi. Em muốn bỏ chữ mươi kia đi khi mà có 1 số thập phân, còn 2 số thập phân vẫn đọc nguyên như cũ. Mà không biết sửa vào chỗ nào. Bác sửa code lại hộ em được không

    Hàm này tôi không sửa nửa. Viết lại mắc công lắm.

    Bạn muốn như ý bạn thì bạn dùng thêm hàm left/right để cắt lấy đoạn bạn cần nhé.

    Tôi kèm cho bạn 33 phần tử trong Mang Arry cho bạn dể xem.
    Trích dẫn:                                             Ví trí
    Phần tử 1[không ]                            0
    Phần tử 2[một ]                               1
    Phần tử 3[hai ]                                 2
    Phần tử 4[ba ]                                  3
    Phần tử 5[bốn ]                               4
    Phần tử 6[năm ]                               5
    Phần tử 7[sáu ]                                6
    Phần tử 8[bảy ]                                7
    Phần tử 9[tám ]                                8
    Phần tử 10[chín ]                             9
    Phần tử 11[triệu, ]                            10
    Phần tử 12[ngàn, ]                           11
    Phần tử 13[tỷ, ]                                12
    Phần tử 14[triệu, ]                            13
    Phần tử 15[ngàn, ]                           14
    Phần tử 16[]                                    15
    Phần tử 17[trăm ]                             16
    Phần tử 18[mươi ]                            17
    Phần tử 19[không mươi không ]       18
    Phần tử 20[không mươi]                   19
    Phần tử 21[lẻ]                                  20
    Phần tử 22[mươi không]                   21
    Phần tử 23[mươi]                             22
    Phần tử 24[mươi năm]                      23
    Phần tử 25[mươi lăm]                       24
    Phần tử 26[một mươi]                      25
    Phần tử 27[mười]                             26
    Phần tử 28[mươi một]                      27
    Phần tử 29[mươi mốt]                      28
    Phần tử 30[Âm ]                              29
    Phần tử 31[đồng ]                            30
    Phần tử 32[ phẩy ]                           31
    Phần tử 33[xu ]                                32