Hiển thị kết quả từ 1 đến 2 / 2
  1. #1
    Tham gia
    27-06-2011
    Bài viết
    1
    Like
    0
    Thanked 0 Times in 0 Posts

    Tệ thật ! đổi số thành chữ

    mình có cái đoạn VB viết dịch số thành chữ như sau :
    cái này là dịch vàng SJC
    vd: nhập là 19.6 thì đoạn VB bên dưới nó dịch là: "mười chín chỉ vàng sjc sáu muơi phân" ----> nó dịch bị sai
    chính xác là nó phải dich là : "mười chín chỉ vàng sjc sáu phân" mới đúng.

    bạn nào có kinh nghiệm chỉnh dùm mình cho nó dịch đúng giúp, xin cảm ơn.
    đoạn code bên dưới nhe
    ----------------------------------------------------------------------


    Function XAU(BAONHIEU)
    Dim KETQUA, SOTIEN, NHOM, CHU, S1, S2, S3, DICH As String
    Dim N, J, VITRI As Byte, S As Double, HANG, DOC, DEM
    If BAONHIEU = 0 Then
    KETQUA = "Không chỉ vàng SJC"
    Else
    If Abs(BAONHIEU) > 1E+15 Then
    KETQUA = "Số quá lớn"
    Else
    GoSub LAMVIECDI
    End If
    End If
    XAU = UCase(Left(KETQUA, 1)) + Mid(KETQUA, 2)
    Exit Function
    LAMVIECDI:
    If BAONHIEU < 0 Then
    KETQUA = "Tru" & Space(1)
    Else
    KETQUA = Space(0)
    End If
    SOTIEN = Format(Abs(BAONHIEU), "##############0.00")
    SOTIEN = Right(Space(15) & SOTIEN, 18)
    HANG = Array("None", "trăm", "mươi", "gi do")
    DOC = Array("None", "ngàn tỷ", "tỷ", "triệu", "ngàn", "chỉ vàng SJC", "phân.")
    DEM = Array("None", "một", "hai", "ba", "bốn", "năm", "sáu", "bảy", "tám", "chín")
    For N = 1 To 6
    NHOM = Mid(SOTIEN, N * 3 - 2, 3)
    If NHOM <> Space(3) Then
    Select Case NHOM
    Case "000"
    If N = 5 Then CHU = "chỉ vàng SJC" & Space(1) Else CHU = Space(0)
    Case ".00"
    CHU = "chẳn."
    Case Else
    S1 = Left(NHOM, 1): S2 = Mid(NHOM, 2, 1): S3 = Right(NHOM, 1)
    CHU = Space(0): HANG(3) = DOC(N)
    For J = 1 To 3
    DICH = Space(0): S = Val(Mid(NHOM, J, 1))
    If S > 0 Then DICH = DEM(S) & Space(1) & HANG(J) & Space(1)
    Select Case J
    Case 2 And S = 1
    DICH = "mười" & Space(2)
    Case 3 And S = 0 And NHOM <> Space(2) & "0"
    DICH = HANG(J) & Space(1)
    Case 3 And S = 5 And S2 <> Space(1) And S2 <> "0"
    DICH = "l" & Mid(DICH, 2)
    Case 2 And S = 0 And S3 <> "0"
    If (S1 >= "1" And S1 <= "9") Or (S1 = "0" And N = 5) Then DICH = "lẻ" & Space(1)
    End Select
    CHU = CHU & DICH
    Next J
    End Select
    VITRI = InStr(N, CHU, "mươi mốt", 1)
    KETQUA = KETQUA & CHU
    End If
    Next N
    Return
    End Function
    Quote Quote

  2. #2
    Tham gia
    09-12-2007
    Bài viết
    3
    Like
    0
    Thanked 0 Times in 0 Posts
    Format 2 số lẻ đọc là 60 đúng rồi !

Bookmarks

Quy định

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