将数字转换为数字的程序 [英] Program for converting digits to numbers
本文介绍了将数字转换为数字的程序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我刚刚开始为现金收入制作rdlc报告.
我只想要vb.net中的程序将数量转换成单词.
例如:
12897卢比应写为
仅1287个."
Hi,
I have just started to make an rdlc report for cash receipt .
I just want a program in vb.net to convert number amount into words.
for example:
Rs 12897 should be written as
"Twelve thousand eight hundred ninety seven only."
推荐答案
这篇 [ ^ ]的文章将帮助您.
This[^] article will help you.
看起来像这样吗?
Something that looks like this?
Public Class Converter
Dim _mintnum As Integer
Public Sub New(ByVal num As Integer)
_mintnum = num
End Sub
Public Sub New()
_mintnum = 0
End Sub
Public Shared Function Conversion(ByVal num As Integer) As String
Dim res As String
Dim part1 As String
Dim part2 As String
Dim part3 As String
Dim numLength As Integer
' number length
numLength = num.ToString.Length
If numLength < 4 Then
' hundreds
res = Reading3Digitnumber(num)
End If
If numLength > 3 And numLength < 7 Then
part2 = Reading3Digitnumber(CType(num.ToString.Substring(num.ToString.Length - 3, 3).ToString, Integer))
part1 = Reading3Digitnumber(CType(num.ToString.Substring(0, num.ToString.Length - 3).ToString, Integer))
' if (part1 = one) do not write
If part1.Trim = "one" Then
res = "thousand"
Else
res = part1 & " thousand"
End If
If part2.Trim <> "zero" Then
res = res & " " & part2
End If
End If
If numLength > 6 And numLength < 10 Then
' million
part3 = Reading3Digitnumber(CType(num.ToString.Substring(num.ToString.Length - 3, 3).ToString, Integer))
part2 = Reading3Digitnumber(CType(num.ToString.Substring(num.ToString.Length - 6, 3).ToString, Integer))
part1 = Reading3Digitnumber(CType(num.ToString.Substring(0, num.ToString.Length - 6).ToString, Integer))
If (part2.Trim = "zero") Then
res = part1 & " million"
ElseIf (part2.Trim = "one") Then
res = part1 & " million" & " thousand"
Else
res = part1 & " million " & part2 & " thousand"
End If
If (part3.Trim <> "zero") Then
res = res & " " & part3
End If
End If
Return res
End Function
Private Shared Function Reading1Digitnumber(ByVal nb As Integer) As String
Dim deZeroA9() As String = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"}
Dim res As String = ""
Dim i As Integer
For i = 0 To 9
If (CType(nb.ToString, Integer) = i) Then
res = deZeroA9(i)
Exit For
End If
Next
Return res
End Function
Private Shared Function Reading2Digitnumber(ByVal nb As Integer) As String
Dim from1To9() As String = {"one", "two", "three", "four", "five", "six", "seven", "eight", "nine"}
Dim from11To19() As String =
{"eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen"}
Dim from10To90() As String =
{"ten", "twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty",
"ninety"}
Dim thenumbers() As Char
thenumbers = nb.ToString.ToCharArray
Dim res As String = ""
Dim i As Integer
If thenumbers(0) = "1" Then
If (CType(thenumbers(1).ToString, Integer) = 0) Then
res = from10To90(0)
Else
For i = 0 To 8
If (CType(thenumbers(1).ToString, Integer) = i + 1) Then
res = from11To19(i)
Exit For
End If
Next
End If
End If
If (thenumbers(0) = "2") _
Or (thenumbers(0) = "3") _
Or (thenumbers(0) = "4") _
Or (thenumbers(0) = "5") _
Or (thenumbers(0) = "6") _
Or (thenumbers(0) = "8") Then
' if the second digit is a zero
If (thenumbers(0) = "2") Then
If (CType(thenumbers(1).ToString, Integer) = 0) Then
res = from10To90(1)
Else
For i = 0 To 8
If (CType(thenumbers(1).ToString, Integer) = i + 1) Then
res = from10To90(1)
res = res & " and " & from1To9(i)
Exit For
End If
Next
End If
End If
If (thenumbers(0) = "3") Then
If (CType(thenumbers(1).ToString, Integer) = 0) Then
res = from10To90(2)
Else
For i = 0 To 8
If (CType(thenumbers(1).ToString, Integer) = i + 1) Then
res = from10To90(2)
res = res & " and " & from1To9(i)
Exit For
End If
Next
End If
End If
If (thenumbers(0) = "4") Then
If (CType(thenumbers(1).ToString, Integer) = 0) Then
res = from10To90(3)
Else
For i = 0 To 8
If (CType(thenumbers(1).ToString, Integer) = i + 1) Then
res = from10To90(3)
res = res & " and " & from1To9(i)
Exit For
End If
Next
End If
End If
If (thenumbers(0) = "5") Then
If (CType(thenumbers(1).ToString, Integer) = 0) Then
res = from10To90(4)
Else
For i = 0 To 8
If (CType(thenumbers(1).ToString, Integer) = i + 1) Then
res = from10To90(4)
res = res & " and " & from1To9(i)
Exit For
End If
Next
End If
End If
If (thenumbers(0) = "6") Then
If (CType(thenumbers(1).ToString, Integer) = 0) Then
res = from10To90(5)
Else
For i = 0 To 8
If (CType(thenumbers(1).ToString, Integer) = i + 1) Then
res = from10To90(5)
res = res & " and " & from1To9(i)
Exit For
End If
Next
End If
End If
If (thenumbers(0) = "8") Then
If (CType(thenumbers(1).ToString, Integer) = 0) Then
res = from10To90(7)
Else
For i = 0 To 8
If (CType(thenumbers(1).ToString, Integer) = i + 1) Then
res = from10To90(7)
res = res & " and " & from1To9(i)
Exit For
End If
Next
End If
End If
End If
If (thenumbers(0) = "7") Or (thenumbers(0) = "9") Then
' if the second digit is a zero
If (thenumbers(0) = "7") Then
If (CType(thenumbers(1).ToString, Integer) = 0) Then
res = from10To90(6)
Else
For i = 0 To 8
If (CType(thenumbers(1).ToString, Integer) = i + 1) Then
res = from10To90(5)
res = res & " and " & from11To19(i)
Exit For
End If
Next
End If
End If
If (thenumbers(0) = "9") Then
If (CType(thenumbers(1).ToString, Integer) = 0) Then
res = from10To90(8)
Else
For i = 0 To 8
If (CType(thenumbers(1).ToString, Integer) = i + 1) Then
res = from10To90(7)
res = res & " and " & from11To19(i)
Exit For
End If
Next
End If
End If
End If
Return res
End Function
Private Shared Function Reading3Digitnumber(ByVal nb As Integer) As String
Dim from2To9() As String = {"two", "three", "four", "five", "six", "seven", "eight", "nine"}
Const strCent As String = "hundred"
Dim thenumbers() As Char
Dim res As String = ""
Dim i As Integer
thenumbers = nb.ToString.ToCharArray
Select Case nb.ToString.Length
Case 1
res = Reading1Digitnumber(nb)
Case 2
res = Reading2Digitnumber(nb)
Case 3
If thenumbers(0) = "1" Then
res = strCent
Else
For i = 0 To 7
If CType(thenumbers(0).ToString, Integer) = i + 2 Then
res = from2To9(i) & " " & strCent
End If
Next
End If
If thenumbers(1) = "0" Then
Dim intermediatepart As String
intermediatepart = Reading1Digitnumber(CType(nb.ToString.Substring(2), Integer))
If intermediatepart <> "zero" Then
res = res & " " & intermediatepart
End If
Else
res = res & " " & Reading2Digitnumber(CType(nb.ToString.Substring(1), Integer))
End If
Case Else
End Select
Return res
End Function
End Class
在表单中添加2个文本框.
然后:TextBoxResult.Text = Converter.Conversion(CType(TextBoxNumber.Text.Trim,Integer))
PS:您可能必须适应一下,因为最初它是法语的!
再见
Pascal
Add 2 TextBox in your Form.
and then : TextBoxResult.Text = Converter.Conversion(CType(TextBoxNumber.Text.Trim, Integer))
PS: You may have to adapt because initially it was in French!
Bye.
Pascal
在这里你去
将数字货币转换为单词(仅适用于印度货币)(已优化) [将数字货币转换为国际货币的单词-第二部分(优化) [将C#转换为VB.NET [
Here you go
Convert Numeric Currency into Words (For INDIAN Currency Only) (Optimized)[^]
Convert Numeric Currency into Words for International Currency - Part - II (Optimized)[^]
For code conversion
Convert C# to VB.NET[^]
这篇关于将数字转换为数字的程序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文