• Vui lòng đọc nội qui diễn đàn để tránh bị xóa bài viết
  • Tìm kiếm trước khi đặt câu hỏi

Chuyển số thành chữ Tiếng Anh

Các mẹo vặt linh tinh không thuộc các nhóm trên

Điều hành viên: tungcan5diop, QUANITGROBEST

Hình đại diện của người dùng
tungcan5diop
Cựu chiến binh
Cựu chiến binh
Bài viết: 1123
Ngày tham gia: T.Tư 24/09/2008 4:04 pm
Đến từ: TPHCM
Has thanked: 1 time
Been thanked: 28 time

Chuyển số thành chữ Tiếng Anh

Gửi bàigửi bởi tungcan5diop » T.Tư 16/12/2009 4:24 pm

thực ra cái này code bên VBA mình chuyển qua Vb.net cho các bạn tham khảo,chỉ thay đổi tí xíu là OK
cái này cũng tương tự như chuyển số thành chữ Tiếng Việt...chỉ khác cách đọc thôi
  1.  Public Function ReadMoney(ByVal strNumber As String, ByVal VarCurrency As String) As String
  2.         '===== Note : Apply to VND only - read in English
  3.         '===== strNumber contains 12 digitals as maximum
  4.         Dim tmp3Num(4) As Integer
  5.         Dim Number As String = ""
  6.         Dim I As Integer = 0
  7.         Dim j As Integer = 0
  8.         Dim k As Integer = 0
  9.         Dim strResult As String = ""
  10.         Dim bSmallNum As Boolean = False
  11.         Dim temp As Double = 0
  12.         Dim tempnumber As String = ""
  13.  
  14.         If Not IsNumeric(strNumber) Then ReadMoney = "Please enter a number only !" : Exit Function
  15.         If Len(strNumber) > 12 Then ReadMoney = "Too large number ! The maximum of this number is 999.999.999.999 (12 digitals only)" : Exit Function
  16.  
  17.         temp = Val(strNumber) - Int(Val(strNumber))
  18.         If temp <> 0 Then tempnumber = ReadMoney(CInt(temp * 100), "")
  19.         Number = Trim(Int(strNumber))
  20.         If CDbl(Number) = 0 Then ReadMoney = "Zero " & VarCurrency : Exit Function
  21.         Dim Hang() As String = {"thousand", "million", "billion"}
  22.         'Hang = Array("thousand", "million", "billion")
  23.         j = Len(Number) \ 3
  24.         If Len(Number) Mod 3 > 0 Then j = j + 1
  25.         For I = j - 1 To 0 Step -1
  26.             tmp3Num(I) = CInt(Right(Number, IIf(Len(Number) >= 3, 3, Len(Number))))
  27.             If I > 0 Then
  28.                 Number = Left(Number, Len(Number) - 3)
  29.             End If
  30.         Next I
  31.         k = 0
  32.         For I = j - 1 To 0 Step -1
  33.             If I = j - 1 Then
  34.                 If Len(CStr(tmp3Num(I))) = 3 Then
  35.                     strResult = Read3Num(tmp3Num(I), VarCurrency, True)
  36.                 Else
  37.                     bSmallNum = True
  38.                     If CDbl(strNumber) >= 100 Then bSmallNum = False
  39.                     strResult = Read2Num(tmp3Num(I), VarCurrency, True, bSmallNum)
  40.                 End If
  41.             Else
  42.                 If Len(CStr(tmp3Num(I))) = 3 Then
  43.                     strResult = Read3Num(tmp3Num(I), VarCurrency) & Space(1) & IIf(tmp3Num(I) > 0, Hang(k) & " ", "") & strResult
  44.                 Else
  45.                     strResult = Read2Num(tmp3Num(I), VarCurrency) & Space(1) & IIf(tmp3Num(I) > 0, Hang(k) & " ", "") & strResult
  46.                 End If
  47.                 k = k + 1
  48.             End If
  49.         Next I
  50.         Dim firstchar As String
  51.         If Len(tempnumber) > 0 Then strResult = strResult + " point " + tempnumber
  52.         strResult = Trim(strResult)
  53.         firstchar = UCase(Left(strResult, 1))
  54.         strResult = VarCurrency & " " & firstchar & Right(strResult, Len(strResult) - 1)
  55.         ReadMoney = strResult
  56.     End Function

  1.  Public Function Read3Num(ByVal intNum As Integer, ByVal VarCurrency As String, Optional ByVal bLastNum As Boolean = False) As String
  2.         If intNum > 1000 Then Read3Num = "" : Exit Function
  3.         Dim Tram() As String = {"one", "two", "three", "four", "five", "six", "seven", "eight", "nine"}
  4.         'Tram = Array("one", "two", "three", "four", "five", "six", "seven", "eight", "nine")
  5.         If intNum = 0 Then Read3Num = "" : Exit Function
  6.         Read3Num = Tram((intNum \ 100) - 1) & " hundred"
  7.         If intNum Mod 100 > 0 Then
  8.             If bLastNum Then Read3Num = Read3Num
  9.             Read3Num = Read3Num & Space(1) & Read2Num(intNum Mod 100, VarCurrency)
  10.         End If
  11.         If bLastNum Then Read3Num = Read3Num
  12.     End Function

  1.  Public Function Read2Num(ByVal intNum As Integer, ByVal VarCurrency As String, Optional ByVal bLastNum As Boolean = False, Optional ByVal bSmallNum As Boolean = False) As String
  2.         Read2Num = ""
  3.         If intNum > 100 Then Read2Num = "" : Exit Function
  4.         Dim donvi() As String = {"one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten", "eleven", "twelve", _
  5.                                     "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen"}
  6.         Dim Chuc() As String = {"twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety"}
  7.  
  8.         'donvi = Array("one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten", "eleven", "twelve", _
  9.         '                            "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen")
  10.         'Chuc = Array("twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety")
  11.         Select Case intNum
  12.             Case 1 To 19
  13.                 If bLastNum And (Not bSmallNum) Then Read2Num = Read2Num
  14.                 Read2Num = Read2Num & Space(1) & donvi(intNum - 1)
  15.             Case Is > 19
  16.                 Read2Num = Chuc(CInt(intNum \ 10) - 2)
  17.                 If intNum Mod 10 > 0 Then
  18.                     If bLastNum And (Not bSmallNum) Then Read2Num = Read2Num
  19.                     Read2Num = Read2Num & Space(1) & donvi((intNum Mod 10) - 1)
  20.                 End If
  21.             Case Else
  22.                 Read2Num = ""
  23.         End Select
  24.         If bLastNum Then Read2Num = Read2Num
  25.     End Function

cách sử dụng
  1.  MessageBox.Show("1,000,456" & "đọc là :" & ReadMoney("1,000,456", "DOLLARS"))

chúc các bạn đọc..đúng :D


Hỡi thế gian bug(lỗi) là gì?
Mà sửa...hoài không hết!

Quay về “[.NET] Mẹo vặt khác”

Đang trực tuyến

Đang xem chuyên mục này: Không có thành viên nào trực tuyến.1 khách