تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
تفقيط الأرقام العشرية بالانكليزية
#1
Question 
السلام عليكم،،
أخواني الأفاضل لدي كود يسمح بتفقيط الأرقام الصحيحة فقط أما الأرقام العشرية(مثال: 952364879.75) فلا يدعمها
لذا أرجو منكم المساعدة أو الإرشاد للوصول إلى الكود المطلوب
مع جزيل الشكر

مرفق الكود القديم
كود :
Public Class NumeriCon

        Public Shared Function ConvertNum(ByVal Input As Long) As String 'Call this function passing the number you desire to be changed
            Dim output As String = Nothing
            If Input < 1000 Then
                output = FindNumber(Input) 'if its less than 1000 then just look it up
            Else
                Dim nparts() As String 'used to break the number up into 3 digit parts
                Dim n As String = Input 'string version of the number
                Dim i As Long = Input.ToString.Length 'length of the string to help break it up

                Do Until i - 3 <= 0
                    n = n.Insert(i - 3, ",") 'insert commas to use as splitters
                    i = i - 3 'this insures that we get the correct number of parts
                Loop
                nparts = n.Split(",") 'split the string into the array

                i = Input.ToString.Length 'return i to initial value for reuse
                Dim p As Integer = 0 'p for parts, used for finding correct suffix
                For Each s As String In nparts
                    Dim x As Long = CLng(s) 'x is used to compare the part value to other values
                    p = p + 1
                    If p = nparts.Length Then 'if p = number of elements in the array then we need to do something different
                        If x <> 0 Then
                            If CLng(s) < 100 Then
                                output = output & " And " & FindNumber(CLng(s)) ' look up the number, no suffix
                            Else                                                ' required as this is the last part
                                output = output & " " & FindNumber(CLng(s))
                            End If
                        End If
                    Else 'if its not the last element in the array
                        If x <> 0 Then
                            If output = Nothing Then 'we have to check this so we don't add a leading space
                                output = output & FindNumber(CLng(s)) & " " & FindSuffix(i, CLng(s)) 'look up the number and suffix
                            Else 'spaces must go in the right place
                                output = output & " " & FindNumber(CLng(s)) & " " & FindSuffix(i, CLng(s)) 'look up the snumber and suffix
                            End If
                        End If
                    End If
                    i = i - 3 'reduce the suffix counter by 3 to step down to the next suffix
                Next
            End If
            Return output
        End Function

        Private Shared Function FindNumber(ByVal Number As Long) As String
            Dim Words As String = Nothing
            Dim Digits() As String = {"Zero", "One", "Two", "Three", "Four", "Five", "Six", "Seven", _
          "Eight", "Nine", "Ten"}
            Dim Teens() As String = {"", "Eleven", "Twelve", "Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen", _
           "Eighteen", "Nineteen"}

            If Number < 11 Then
                Words = Digits(Number)

            ElseIf Number < 20 Then
                Words = Teens(Number - 10)

            ElseIf Number = 20 Then
                Words = "Twenty"

            ElseIf Number < 30 Then
                Words = "Twenty " & Digits(Number - 20)

            ElseIf Number = 30 Then
                Words = "Thirty"

            ElseIf Number < 40 Then
                Words = "Thirty " & Digits(Number - 30)

            ElseIf Number = 40 Then
                Words = "Fourty"

            ElseIf Number < 50 Then
                Words = "Fourty " & Digits(Number - 40)

            ElseIf Number = 50 Then
                Words = "Fifty"

            ElseIf Number < 60 Then
                Words = "Fifty " & Digits(Number - 50)

            ElseIf Number = 60 Then
                Words = "Sixty"

            ElseIf Number < 70 Then
                Words = "Sixty " & Digits(Number - 60)

            ElseIf Number = 70 Then
                Words = "Seventy"

            ElseIf Number < 80 Then
                Words = "Seventy " & Digits(Number - 70)

            ElseIf Number = 80 Then
                Words = "Eighty"

            ElseIf Number < 90 Then
                Words = "Eighty " & Digits(Number - 80)

            ElseIf Number = 90 Then
                Words = "Ninety"

            ElseIf Number < 100 Then
                Words = "Ninety " & Digits(Number - 90)

            ElseIf Number < 1000 Then
                Words = Number.ToString
                Words = Words.Insert(1, ",")
                Dim wparts As String() = Words.Split(",")
                Words = FindNumber(wparts(0)) & " " & "Hundred"
                Dim n As String = FindNumber(wparts(1))
                If CLng(wparts(1)) <> 0 Then
                    Words = Words & " And " & n
                End If
            End If

            Return Words
        End Function

        Private Shared Function FindSuffix(ByVal Length As Long, ByVal l As Long) As String
            Dim word As String

            If l <> 0 Then
                If Length > 12 Then
                    word = "Trillion"
                ElseIf Length > 9 Then
                    word = "Billion"
                ElseIf Length > 6 Then
                    word = "Million"
                ElseIf Length > 3 Then
                    word = "Thousand"
                ElseIf Length > 2 Then
                    word = "Hundred"
                Else
                    word = ""
                End If
            Else
                word = ""
            End If

            Return word
        End Function

    End Class
{ اللهم علمنا ما ينفعنا وانفعنا بما علمتنا إنك أنت العليم الخبير }
الرد }}}
تم الشكر بواسطة:


الردود في هذا الموضوع
تفقيط الأرقام العشرية بالانكليزية - بواسطة abuzzouz - 18-07-14, 12:28 AM

المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  تقريب الأعداد العشرية إلى الرقم الأعلى مباشرة العيدروس 2 372 20-01-25, 12:51 AM
آخر رد: العيدروس
  [VB.NET] تحويل لغة الأرقام في فيجوال ستوديو AboBattal 2 389 12-11-24, 08:11 AM
آخر رد: أبو خالد الشكري
  سؤال عن طريقة التعامل مع الفاصلة العشرية المتألق9 2 520 28-09-24, 04:45 PM
آخر رد: المتألق9
Sad مشكلة تقريب الأرقام Sql Server waataanys 2 740 09-05-24, 03:52 PM
آخر رد: تركي الحلواني
  تلوين الخلايا بالداتاجريد حسب الأرقام R G B محمد خيري 4 479 09-05-24, 01:11 AM
آخر رد: أبو خالد الشكري
  خطوط تعريب الأرقام في كريستال ريبورت صالح عبدالله 4 753 16-02-24, 09:28 PM
آخر رد: صالح عبدالله
  [VB.NET] ارغب في كود إلزام المستخدم ادخال الأرقام محصور بعددين loay775 2 561 18-01-24, 05:02 PM
آخر رد: loay775
Question [VB.NET] اسم عمود الأرقام في DataGridView أبو خالد الشكري 6 1,085 03-12-23, 08:01 AM
آخر رد: أبو خالد الشكري
  طريقة تحويل الأرقام إلى حروف Adel27213 2 1,087 18-11-23, 01:40 AM
آخر رد: sniper2030
Sad مشكلة تقريب الأرقام Sql Server waataanys 1 828 13-11-23, 11:39 PM
آخر رد: waataanys

التنقل السريع :


يقوم بقرائة الموضوع: