Đọc số thập phân (số lẻ) như thế nào là đúng ? (2 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

phamduylong

-
Thành viên đã mất
Tham gia
30/12/06
Bài viết
918
Được thích
2,370
Nghề nghiệp
Giáo viên
Đọc số tiếng Việt trong Excel trên diễn đàn đã đề cập nhiều, tôi cũng đã viết hàm đọc số để phục vụ cho việc ghi câu tổng kết số tiền trên các bản tính Excel (TVEXCEL01.XLA) nhưng có một vấn đề mà trên diễn đàn cũng như các bạn đã gởi email cho tôi đề cập đến việc đọc phần số thập phân.
Viết hàm cho đọc số phần nguyên đã giải quyết xong, nhưng viết hàm cho đọc số thập phân quả thật không đơn giản chút nào. Vấn đề không phải ở giải thuật mà lại là không biết đọc cách nào cho đúng. Tôi đưa ra một số cách đọc số thập phân và diễn đàn cùng góp ý để có thể tìm lời giải cho hàm đọc số thập phân. Tôi ví dụ đọc theo 3 cách: cách 1 theo sách giáo khoa, cách 2 theo cách đọc bình dân, cách 3 theo cách đọc tiền Việt Nam.
Ví dụ 1: số 1, 23
1. sách giáo khoa đọc là một đơn vị hai mươi ba phần nghìn.
2. một phẩy hai mươi ba.
3. một đồng hai hào ba xu hoặc một đồng hai mươi ba xu (nếu là tiền Việt Nam).
Ví dụ 2: số 0, 23
1. sách giáo khoa đọc là không đơn vị hai mươi ba phần trăm.
2. không phẩy hai mươi ba.
3. hai hào ba xu hoặc hai mươi ba xu (nếu là tiền Việt Nam).
Ví dụ 4: 1, 02
1. sách giáo khoa đọc là một đơn vị hai phần trăm.
2. một phẩy không hai.
3. một đồng hai xu.
Qua 3 cách đọc trên, tôi có nhận xét:
Cách 1 chính xác nhưng hơi khó nghe đối với giới bình dân.
Cách 2 rất quen thuộc với mọi người nhưng ghép với đơn vị đo lường hơi khó nghe (ví dụ không phẩy hai mươi ba đồng)
Cách 3 chỉ đúng với tiền Việt Nam, một số đơn vị khác không dùng được.
Các bạn cho ý kiến xem cách đọc như thế nào là đúng, phù hợp với tập quán người Việt. Từ đó mới có thể viết ứng dụng cho vấn đề này được.
 
Em chế từ code của Thầy Long thì ra thế này:
Option ExplicitFunction SoVn(ConSo, DonVi As String, Linh As String) As String
Dim n09, nNgan
Dim DsNguyen As String, DsTp As String, dau As String
Dim dvNguyen As String, dvTp As String, s123 As String, s1 As String, s2 As String, s3 As String
Dim soNguyen As Double, soLe As Byte, stt As Byte, nLop As Byte, n1 As Byte, n2 As Byte, n3 As Byte
If Trim(Linh) = "" Then Linh = " linh" Else Linh = " " & Trim(Linh)
n09 = Array("", " m" & ChrW(7897) & "t", " hai", " ba", " b" & ChrW(7889) & "n", " n" & ChrW(259) & "m", " s" & ChrW(225) & "u", " b" & ChrW(7843) & "y", " t" & ChrW(225) & "m", " ch" & ChrW(237) & "n")
nNgan = Array("", " tri" & ChrW(7879) & "u", " ngh" & ChrW(236) & "n", " t" & ChrW(7927))
If Trim(ConSo) = "" Then
SoVn = ""
ElseIf IsNumeric(ConSo) = False Then
SoVn = ConSo
Else
If ConSo < 0 Then dau = ChrW(226) & "m "
ConSo = Application.WorksheetFunction.Round(Abs(ConSo), 2)
If InStr(1, ConSo, "E") > 0 Then 'so format 1,23457E+10
ConSo = Replace(Replace(ConSo, ".", ""), ",", "")
soNguyen = Mid(ConSo, InStr(1, ConSo, "E") + 1)
ConSo = Mid(ConSo, 1, InStr(1, ConSo, "E") - 1)
ConSo = ConSo & String(soNguyen - Len(ConSo) + 1, "0")
End If
soNguyen = Int(ConSo)
soLe = (ConSo - soNguyen) * 100
n1 = (Len(Str(soNguyen)) - 1) Mod 9
If n1 > 0 Then ConSo = String(9 - (n1 Mod 12), "0") & soNguyen

'==================
'Doc so phan nguyen
'==================
nLop = 1
stt = 1
Do
n1 = Mid(ConSo, stt, 1)
n2 = Mid(ConSo, stt + 1, 1)
n3 = Mid(ConSo, stt + 2, 1)
stt = stt + 3
If n1 & n2 & n3 = "000" Then
If DsNguyen <> "" And nLop = 3 And Len(ConSo) - stt > 2 Then s123 = " t" & ChrW(7927) Else s123 = ""
Else
If n1 = 0 Then
If DsNguyen = "" Then s1 = "" Else s1 = " kh" & ChrW(244) & "ng tr" & ChrW(259) & "m"
Else
s1 = n09(n1) & " tr" & ChrW(259) & "m"
End If
If n2 = 0 Then
If s1 = "" Or n3 = 0 Then
s2 = ""
Else
s2 = Linh
End If
Else
If n2 = 1 Then s2 = " m" & ChrW(432) & ChrW(7901) & "i" Else s2 = n09(n2) & " m" & ChrW(432) & ChrW(417) & "i"
End If
If n3 = 1 Then
If n2 = 1 Or n2 = 0 Then s3 = " m" & ChrW(7897) & "t" Else s3 = " m" & ChrW(7889) & "t"
ElseIf n3 = 5 And n2 <> 0 Then
s3 = " l" & ChrW(259) & "m"
Else
s3 = n09(n3)
End If
If stt > Len(ConSo) Then
s123 = s1 & s2 & s3
Else
s123 = s1 & s2 & s3 & nNgan(nLop)
End If
End If
nLop = nLop + 1
If nLop > 3 Then nLop = 1
DsNguyen = DsNguyen & s123
If stt > Len(ConSo) Then Exit Do
Loop
If DsNguyen = "" Then DsNguyen = "kh" & ChrW(244) & "ng" Else DsNguyen = dau & Trim(DsNguyen)


'===============
'Khai bao don vi
'===============
DonVi = LCase(Trim(DonVi))
If DonVi = "" Or DonVi = "" Then
dvNguyen = ""
dvTp = ""
ElseIf DonVi = "" Then
dvNguyen = ""
dvTp = ""
ElseIf DonVi = "" Then
dvNguyen = " "
dvTp = " "
End If

'================
'doc so thap phan
'================
s1 = "": s2 = ""
If soLe = 0 Then
If soNguyen > 0 Then s2 = " ch" & ChrW(7859) & "n"
ElseIf soLe < 10 Then
s2 = n09(soLe) & dvTp
Else
If Left(soLe, 1) = "1" Then
s1 = " m" & ChrW(432) & ChrW(7901) & "i"
Else
s1 = n09(Left(soLe, 1)) & " m" & ChrW(432) & ChrW(417) & "i"
End If
If Right(soLe, 1) = "1" And Left(soLe, 1) <> "1" Then
s2 = " m" & ChrW(7889) & "t" & dvTp
ElseIf Right(soLe, 1) = "5" Then
s2 = " l" & ChrW(259) & "m" & dvTp
Else
s2 = n09(Right(soLe, 1)) & dvTp
End If
End If
SoVn = DsNguyen & dvNguyen & s1 & s2
End If
End Function
Thì no ra như sau
105.21 một trăm linh năm hai mươi mốt280.34 hai trăm tám mươi ba mươi bốn
455.47 bốn trăm năm mươi lăm bốn mươi bảy
630.60 sáu trăm ba mươi sáu mươi
805.73 tám trăm linh năm bảy mươi ba
980.86 chín trăm tám mươi tám mươi sáu
1,155.99 một nghìn một trăm năm mươi lăm chín mươi chín
1,331.12 một nghìn ba trăm ba mươi mốt mười hai
1,506.25 một nghìn năm trăm linh sáu hai mươi lăm
1,681.38 một nghìn sáu trăm tám mươi mốt ba mươi tám
Còn cài này chưa biết đưa vào chỗ nào hì hì ...
để được như ý muốn
Nói chung không ổn ....
 
Lần chỉnh sửa cuối:
Upvote 0
Tại việt nam, việc đọc số phổ biến ở 2 dạng: 1 là trong toán học, và 2 là trong tiền tệ
- Trong toán học: VD 1,23 thì thường đọc là 1 phẩy 23 cái gì đó ( cụ thể hơn 1 phẩy 23 mét hoặc 123 xen ti mét hoặc 1230 mi li mét).
- Trong tiền tệ thì không có thập phân, chỉ có đồng, hào, xu. Khi số tiền lớn hơn đồng thì kết hợp với mười, chục, trăm, nghìn, chục nghìn, v.v... Do đồng tiền việt nam mất giá nên đơn vị tính hiện nay chủ yếu là đến tiền nghìn đồng, nên khi gặp vào một phép tính nào đó lẻ dẫn đến số tiền lẻ và bị coi là thập phân mà thôi (do định dạng tiền nghìn đồng là nhỏ nhất). Còn nếu có thì phải đọc là một đồng 2 hào 3 xu.
* Từ "chẵn" thì sao: do người Việt nam cẩn thận một cách đến ngu ngơ, nếu tiêu được tiền lẻ như vậy thì người ta cũng bắt ghi là một đồng 2 hào 3 xu chẵn. Mà đã trả đủ thì chả chẵn thì sao còn gọi là lẻ được (từ chẵn là từ thừa).
Lấy 1 VD khác: các tháng trong năm có 12 tháng, vậy nếu ghi thì chỉ cần ghi 2 tháng đầu năm là 01, 02 thôi chứ sao cứ phải ghi tháng 09 làm gì (trừ trường hợp bắt buộc do yêu cầu nhập máy tính chẳng hạn).
* Dấu ./. thì sao: cũng là thừa nốt, người ta đã ghi là một trăm nghìn đồng thì nó có khác gì với thêm 1 dấu "./." không? Dấu này chỉ dùng trong soạn thảo văn bản thôi. Thực chất ra là sợ để người khác ghi thêm phần sau, nhưng lại không nghĩ rằng chữ đồng là cuối cùng rồi (vì hiện tại không tiêu tiền hào). Còn từ "Tệ" đúng ra là không có chỉ có chữ "Tiền" thôi, nhưng do từ "tiền" mà nảy sinh nhiều "tệ nạn", mà từ đó người ta nói láy là tiền tệ lâu ngày thành quen không sửa được như ngày nay. Trong cuộc sống có nhiều từ kiểu như vậy.
Tôi kể 1 câu chuyện vui nhé: 1 hợp đồng VN & Nhật bản: VN đặt NB 1500 đôi giày nhưng để cẩn thận VN ghi là 3000 chiếc. Do đó NB sản xuất cho VN 3000 chiếc giày chân trái, và cũng vì thế VN phải đặt thêm 1 HĐ mới với 3000 chiếc giày chân phải (Cách đây cũng khá lâu rồi).
KL: Nhiều khi cẩn thận quá cũng không tốt./. ./.
Xin góp vui vài điều. Cảm ơn mọi người đã đọc bài viết này.
 
Lần chỉnh sửa cuối:
Upvote 0
- Được Bác Văn "vanle33" chỉ bảo em vào chủ đề này.

- Em rất mong được các thành viên giúp em chế biến giùm em món code trong file đính kèm dưới đây. Em xin chân thành cảm ơn!.
Bạn nhờ các thành viên chỉnh sửa code trong bài #5 hoặc #11. Mình thấy code đó gần phù hợp với yêu cầu của bạn.
 
Upvote 0
Vâng!. Mong các bác giúp em, em cảm ơn nhiều!.
 
Upvote 0
...
Lấy 1 VD khác: các tháng trong năm có 12 tháng, vậy nếu ghi thì chỉ cần ghi 2 tháng đầu năm là 01, 02 thôi chứ sao cứ phải ghi tháng 09 làm gì (trừ trường hợp bắt buộc do yêu cầu nhập máy tính chẳng hạn).
...
... Còn từ "Tệ" đúng ra là không có chỉ có chữ "Tiền" thôi, nhưng do từ "tiền" mà nảy sinh nhiều "tệ nạn", mà từ đó người ta nói láy là tiền tệ lâu ngày thành quen không sửa được như ngày nay. Trong cuộc sống có nhiều từ kiểu như vậy.
Tôi kể 1 câu chuyện vui nhé: 1 hợp đồng VN & Nhật bản: VN đặt NB 1500 đôi giày nhưng để cẩn thận VN ghi là 3000 chiếc. Do đó NB sản xuất cho VN 3000 chiếc giày chân trái, và cũng vì thế VN phải đặt thêm 1 HĐ mới với 3000 chiếc giày chân phải (Cách đây cũng khá lâu rồi).
KL: Nhiều khi cẩn thận quá cũng không tốt./. ./.
Xin góp vui vài điều. Cảm ơn mọi người đã đọc bài viết này.

Cách viết tháng: Con số 0 đi trước các số 1-9 là thói quen chứ chẳng phải do cẩn thận. Nhiều người viết văn bản cần thêm như vậy để canh các con số ngay hàng; viết lâu rồi quen tay. Tôi là một trong số này.

Từ "tệ": cái này bạn phê bình hay nói đùa? Từ "tệ" có nghĩa là đơn vị kim ngạch. Đùa như vầy người không biết nghĩ rằng bạn dốt. Còn về chuyện "từ láy" thì nó thuộc về văn hoá. Bạn đã đủ trình độ để phê phán "láy" là hay hoặc dở sao?

Chuyện hợp đông VN - NB: người tự trọng không đùa giỡn với những câu chuyện phiếm tầm xàm có xu hướng chà đạp dân tộc.
 
Upvote 0
- Trong tiền tệ thì không có thập phân, chỉ có đồng, hào, xu. Khi số tiền lớn hơn đồng thì kết hợp với mười, chục, trăm, nghìn, chục nghìn, v.v... Do đồng tiền việt nam mất giá nên đơn vị tính hiện nay chủ yếu là đến tiền nghìn đồng, nên khi gặp vào một phép tính nào đó lẻ dẫn đến số tiền lẻ và bị coi là thập phân mà thôi (do định dạng tiền nghìn đồng là nhỏ nhất). Còn nếu có thì phải đọc là một đồng 2 hào 3 xu.

Bạn cho biết bạn làm việc trong ngành nào? Công ty nào tính lương chẵn ngàn hay vậy? Bất cứ số chẵn ngàn nào trừ bảo hiểm 9.5% xong không thể còn chẵn ngàn. Sau đó trừ bảo hiểm ra, trừ các loại ra, tính thuế thu nhập cá nhân, chẵn ngàn mới là lạ.
Mà bạn có được phát lương qua thẻ không? Hoặc là gởi tiết kiệm? Nếu có, có khi nào bạn thấy tài khoản tăng thêm số tiền lãi chẵn ngàn không?
* Từ "chẵn" thì sao: do người Việt nam cẩn thận một cách đến ngu ngơ, nếu tiêu được tiền lẻ như vậy thì người ta cũng bắt ghi là một đồng 2 hào 3 xu chẵn. Mà đã trả đủ thì chả chẵn thì sao còn gọi là lẻ được (từ chẵn là từ thừa).

Quy ước ghi tiền tệ là năm đồng và hai mươi ba xu. Không có chẵn. Chỉ có chẵn đồng (không xu) mới là chẵn. Và bắt buộc là năm đồng chẵn. Chẳng có chữ nào thừa.
* Dấu ./. thì sao: cũng là thừa nốt, người ta đã ghi là một trăm nghìn đồng thì nó có khác gì với thêm 1 dấu "./." không?

Cuối câu thì phải chấm câu. Ít nhất là dấu chấm. Còn quy định văn bản hồi xưa là dấu chấm hết. Khi chuyển sang văn bản in thay cho văn bản viết tay thì chưa thay đổi quy định. Người lập báo cáo vẫn phải theo quy định mà làm. Tuy nhiên cũng chưa ai bị phạt vì dùng chấm thay cho chấm hết.

Còn từ "Tệ" đúng ra là không có chỉ có chữ "Tiền" thôi, nhưng do từ "tiền" mà nảy sinh nhiều "tệ nạn", mà từ đó người ta nói láy là tiền tệ lâu ngày thành quen không sửa được như ngày nay. Trong cuộc sống có nhiều từ kiểu như vậy.

Chữ tệ trong tiền tệ là từ hán việt, không phải tệ bạc. Bạn suy luận rằng "nói láy"?
 
Upvote 0
Theo Em hiểu code của bài #4 không biết có đúng hay không!.
- Đọc phần nguyên.
- Đọc đơn vị
- Đọc phần thập phân
Vấn đề mà em cần là đọc phần nguyên và phần thập phân (được nối với nhau bằng chữ "phảy")
- Vậy mà sửa mãi không được
- Mong mọi người hướng giúp em với!.
 
Upvote 0
bài của anh rất hay, và mình thích nhất "không muốn chết vì đứt hơi"
haha, cảm ơn anh rất nhiều
 
Upvote 0
Xin nói thêm, hôm qua bỏ sót: Trong tài chính kế toán:
- Quy ước tiền Việt làm tròn đến hàng đơn vị, nên có thể bỏ qua chữ "chẵn"
- Quy ước ngoại tệ làm tròn đến hàng 1 phần trăm, nên cần có chữ chẵn. Và sẽ không có 3 chữ số thập phân trở lên, nên không có trường hợp "phẩy không không không bốn"
- Các đơn vị tính khác không phải tiền tệ, cũng ít khi gặp nhiều số thập phân. Nếu có thì "không không không bốn" cũng chấp nhận được.
- Dấu chấm, hoặc chấm hết (./.) phải có 1 trong hai, tuỳ ngân hàng và kho bạc.
- Linh hay lẻ, bốn hay tư, lăm hay nhăm đó là theo vùng miền, không chiều hết được.

Nhớ ngày xưa thời bao cấp, chỉ có 1 hệ thống ngân hàng duy nhất của nhà nước, mọi giao dịch đều qua ngân hàng vì không có công ty tư nhân. Khi viết séc rút tiền mặt phải theo quy định cách viết. Cách viết lại thay đổi định kỳ để tránh trường hợp séc do người không có trách nhiệm viết hoặc nhân viên đã nghỉ làm lấy về nhà viết. Thí dụ sau một ký hiệu phẩy nào đó phải viết hoa, hoặc có và không có dấu phẩy ở chỗ này, chỗ khác.

Bây giờ hết bao cấp rồi mà vẫn còn những quy định này nọ, chỉ có giao dịch tiếng Anh với đối tác nước ngoài là khỏe


mãi hôm may mới được đọc bài của anh, rất hay
mình đang tìm cách đọc tiền từ số ra chữ với đô la đây
tải hoài mà không xong
 
Upvote 0
Xin hỏi bác Long và các cao thủ, em muốn:
- Phần đọc số tiếng Việt: Viết hoa đầu dòng khi đọc số thập phân thì thêm chữ "và" (vd: mười lăm đồng và bốn xu" Bỏ chữ "chẵn" ở cuối câu
- Phần đọc số tiếng Anh: Viết hoa đầu dòng Chữ US dollars thì hiển thị tiếng Việt có dấu "đô la Mỹ" Bỏ chữ chẵn ở cuối câu Thêm chữ "và" khi đọc số lẻ (vd: mười lăm đô la Mỹ và mười tám cents)
- Sau đó, nhờ các cao thủ gúp thêm: Em hay phải soạn Hợp đồng gồm 3 bên (Bên A, Nhóm Bên B có thể có các bên B1, B2......, Nhóm Bên C có thể có các bên C1, C2....). Mỗi bên đều có 1 số trường thông tin nhât định. Em muốn nhập liệu ở 1 sheet và kết quả chạy ở 1 sheet. Quan trọng là có thể tùy biến, nếu số lượng các bên ở sheet nhập liệu tăng lên thì sheet kết quả cũng tự chèn thêm, còn nếu xóa đi thông tin 1 bên ở sheet nhap lieu thi sheet kết quả cũng tự động xóa đi các dòng trống không có thông tin để bản in được đẹp
Xin gửi file đính kèm, nhờ bác Long và các cao thủ giúp đỡ

quần áo trẻ em | quan ao tre em | quần áo sơ sinh | quần áo bé trai | quần áo bé gái | bodysuit carter | quan ao so sinh | quan ao tre em nhap khau
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Tôi phát triển từ hàm DocSo thành hàm SoVn cho phép đọc đến 2 số thập phân. Nó cho phép bạn khai báo đơn vị, thay đổi cách đọc theo ý riêng.

Hàm này có 3 đối số:
SoVn(ConSo, DonVi, Linh)
ConSo: số nguyên hay số thập phân cần đọc số.
DonVi: tên đơn vị của con số. Mỗi đơn vị có 2 phần : phần nguyên và phần thập phân. Bạn nhập 1 trong 3 loại đơn vị:
- "d": đồng, xu
- "m": mét, cm
- "u"; usd, cent
(bạn có thể thay đổi đơn vị bằng cách chỉnh phần khai báo đơn vị trong hàm SoVn)
Linh: cách đọc linh hay lẻ hay 1 chuỗi bất kỳ cho các số không có hàng chục
SoVn(105,21 ;"d";"lẻ") > một trăm lẻ năm đồng hai mươi mốt xu
SoVn(105,21 ;"m";"linh") > một trăm linh năm mét hai mươi mốt cm
SoVn(105,21 ;"u";"không") > một trăm không năm usd hai mươi mốt cent
Tiền usd không biết đọc vậy có đúng không chưa thấy giấy tờ ghi tiền usd.
Các bạn muốn thêm hay chỉnh đơn vị thì chỉnh trong phần code màu xanh. Muốn thêm đơn vị mới cứ thêm ElseIf.

Mã:
Function SoVn(ConSo, DonVi As String, Linh As String) As String
Dim n09, nNgan
Dim DsNguyen As String, DsTp As String, dau As String
Dim dvNguyen As String, dvTp As String, s123 As String, s1 As String, s2 As String, s3 As String
Dim soNguyen As Double, soLe As Byte, stt As Byte, nLop As Byte, n1 As Byte, n2 As Byte, n3 As Byte
If Trim(Linh) = "" Then Linh = " linh" Else Linh = " " & Trim(Linh)
n09 = Array("", " m" & ChrW(7897) & "t", " hai", " ba", " b" & ChrW(7889) & "n", " n" & ChrW(259) & "m", " s" & ChrW(225) & "u", " b" & ChrW(7843) & "y", " t" & ChrW(225) & "m", " ch" & ChrW(237) & "n")
nNgan = Array("", " tri" & ChrW(7879) & "u", " ngh" & ChrW(236) & "n", " t" & ChrW(7927))
If Trim(ConSo) = "" Then
  SoVn = ""
ElseIf IsNumeric(ConSo) = False Then
  SoVn = ConSo
Else
  If ConSo < 0 Then dau = ChrW(226) & "m "
  ConSo = Application.WorksheetFunction.Round(Abs(ConSo), 2)
  If InStr(1, ConSo, "E") > 0 Then 'so format 1,23457E+10
    ConSo = Replace(Replace(ConSo, ".", ""), ",", "")
    soNguyen = Mid(ConSo, InStr(1, ConSo, "E") + 1)
    ConSo = Mid(ConSo, 1, InStr(1, ConSo, "E") - 1)
    ConSo = ConSo & String(soNguyen - Len(ConSo) + 1, "0")
  End If
  soNguyen = Int(ConSo)
  soLe = (ConSo - soNguyen) * 100
  n1 = (Len(Str(soNguyen)) - 1) Mod 9
  If n1 > 0 Then ConSo = String(9 - (n1 Mod 12), "0") & soNguyen
 
  '==================
  'Doc so phan nguyen
  '==================
  nLop = 1
  stt = 1
  Do
    n1 = Mid(ConSo, stt, 1)
    n2 = Mid(ConSo, stt + 1, 1)
    n3 = Mid(ConSo, stt + 2, 1)
    stt = stt + 3
    If n1 & n2 & n3 = "000" Then
      If DsNguyen <> "" And nLop = 3 And Len(ConSo) - stt > 2 Then s123 = " t" & ChrW(7927) Else s123 = ""
    Else
      If n1 = 0 Then
        If DsNguyen = "" Then s1 = "" Else s1 = " kh" & ChrW(244) & "ng tr" & ChrW(259) & "m"
      Else
        s1 = n09(n1) & " tr" & ChrW(259) & "m"
      End If
      If n2 = 0 Then
        If s1 = "" Or n3 = 0 Then
          s2 = ""
        Else
          s2 = Linh
        End If
      Else
        If n2 = 1 Then s2 = " m" & ChrW(432) & ChrW(7901) & "i" Else s2 = n09(n2) & " m" & ChrW(432) & ChrW(417) & "i"
      End If
      If n3 = 1 Then
        If n2 = 1 Or n2 = 0 Then s3 = " m" & ChrW(7897) & "t" Else s3 = " m" & ChrW(7889) & "t"
      ElseIf n3 = 5 And n2 <> 0 Then
        s3 = " l" & ChrW(259) & "m"
      Else
        s3 = n09(n3)
      End If
      If stt > Len(ConSo) Then
        s123 = s1 & s2 & s3
      Else
        s123 = s1 & s2 & s3 & nNgan(nLop)
      End If
    End If
    nLop = nLop + 1
    If nLop > 3 Then nLop = 1
    DsNguyen = DsNguyen & s123
    If stt > Len(ConSo) Then Exit Do
  Loop
  If DsNguyen = "" Then DsNguyen = "kh" & ChrW(244) & "ng" Else DsNguyen = dau & Trim(DsNguyen)
 
 
  [COLOR=blue]'===============[/COLOR]
[COLOR=blue] 'Khai bao don vi[/COLOR]
[COLOR=blue] '===============[/COLOR]
 [COLOR=blue]DonVi = LCase(Trim(DonVi))[/COLOR]
[COLOR=blue] If DonVi = "" Or DonVi = "d" Then[/COLOR]
[COLOR=blue]   dvNguyen = " " & ChrW(273) & ChrW(7891) & "ng"[/COLOR]
[COLOR=blue]   dvTp = " xu"[/COLOR]
[COLOR=blue] ElseIf DonVi = "m" Then[/COLOR]
[COLOR=blue]   dvNguyen = " mét"[/COLOR]
[COLOR=blue]   dvTp = " cm"[/COLOR]
[COLOR=blue] ElseIf DonVi = "u" Then[/COLOR]
[COLOR=blue]   dvNguyen = " usd"[/COLOR]
[COLOR=blue]   dvTp = " cent"[/COLOR]
[COLOR=blue] End If[/COLOR]
  
  '================
  'doc so thap phan
  '================
  s1 = "": s2 = ""
  If soLe = 0 Then
    If soNguyen > 0 Then s2 = " ch" & ChrW(7859) & "n"
  ElseIf soLe < 10 Then
    s2 = n09(soLe) & dvTp
  Else
    If Left(soLe, 1) = "1" Then
      s1 = " m" & ChrW(432) & ChrW(7901) & "i"
    Else
      s1 = n09(Left(soLe, 1)) & " m" & ChrW(432) & ChrW(417) & "i"
    End If
    If Right(soLe, 1) = "1" And Left(soLe, 1) <> "1" Then
      s2 = " m" & ChrW(7889) & "t" & dvTp
    ElseIf Right(soLe, 1) = "5" Then
      s2 = " l" & ChrW(259) & "m" & dvTp
    Else
      s2 = n09(Right(soLe, 1)) & dvTp
    End If
  End If
  SoVn = DsNguyen & dvNguyen & s1 & s2
End If
End Function
- em muốn chỉnh đoạn code để đọc số như sau: 100.05 thì sẽ đọc là một trăm phẩy không năm mét vuông, thì phải sửa code thế nào ah, bác nào bíêt chỉ em với, em cảm ơn nhìu ah
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom