将数字转换为数字的程序 [英] Program for converting digits to numbers

查看:94
本文介绍了将数字转换为数字的程序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述


我刚刚开始为现金收入制作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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆