تقييم الموضوع :
  • 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
{ اللهم علمنا ما ينفعنا وانفعنا بما علمتنا إنك أنت العليم الخبير }
الرد }}}
تم الشكر بواسطة:
#2
يمكنك أن تستخدم .... String.Format فهي الأسهل و الأفضل
الرد }}}
تم الشكر بواسطة:
#3
أرجو التوضيح أكثر أخي العزيز silverlight
{ اللهم علمنا ما ينفعنا وانفعنا بما علمتنا إنك أنت العليم الخبير }
الرد }}}
تم الشكر بواسطة:
#4
الكود سيكون شئ من هذا القبيل

كود :
String.Format("{0:#,###0}", 19988888779)

ف اللينك التالي ستجد بعض الأفكار أيضا

اللينك
الرد }}}
تم الشكر بواسطة:
#5
شكرا جزيلا اخي silverlight فهمت قصدك، إلا أن الموضوع لا يتعلق بتنسيق الرقم فالرقم أريده عشريا كما هو وأطبق عليه كود التفقيط
بحثت جاهدا عبر النت للتوصل الى ذلك ولم أجد سوى تفقيط باللغة العربية او تفقيط انكليزي بلغة برمجة أخرى غير vb.net
لذا أرجو المساعدة جزاكم الله خيرا
{ اللهم علمنا ما ينفعنا وانفعنا بما علمتنا إنك أنت العليم الخبير }
الرد }}}
تم الشكر بواسطة:
#6
الأن انا فهمت ما تقصده أنت ......ما تريده ب التفقيط هو كتابة الارقام كالتالي مثلا 1000120 تُكتب مليون و مائة و عشرون........اعتقد الكود موجود ف الموقع القديم و إن لم تجده سأضعه لك لاحقا
الرد }}}
تم الشكر بواسطة: abuzzouz
#7
.....

أضف هذه الدالة إلى الكلاس NumeriCon، ولو قمت بتغيير نوع تصريح الدالة ConvertNum من Public إلى Private يكون أفضل
كود :
Public Shared Function ConvertNumber(ByVal Input As Double) As String
    Dim _num As String = Input.ToString
    Dim _int As String = ConvertNum(System.Math.Floor(Input))
    Dim _dec As String = String.Empty
    If _num.Contains(".") Then
        _dec = ConvertNum(CLng(_num.ToString.Substring(_num.IndexOf(".") + 1)))
    End If
    Return _int & IIf(_dec <> "", " Point " & _dec, "")
End Function

وعند التحويل استخدم الدالة ConvertNumber بدلا من الدالة ConvertNum مثال
كود :
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Me.TextBox2.Text = ConvertNumber(Me.TextBox1.Text)
End Sub

.....
الرد }}}
تم الشكر بواسطة: abuzzouz , raoe-041 , aftfm
#8
شكراً جزيلاً أخي العزيز vb.net أحسن الله إليك كما أحسنت إلي وجعل الله ذلك في ميزان حسناتك

لوتكرمت لدي طلب آخر بسيط بالنسبة لك لأنهي مشروعي الصغير حيث أن لي سؤال قد طرحته في قسم أسئلة التقارير والطباعة ولم أجد رداً عليه
http://vb4arb.com/vb/thread-3499.html

مع كل الشكر والتقدير لكم أخي العزيز
{ اللهم علمنا ما ينفعنا وانفعنا بما علمتنا إنك أنت العليم الخبير }
الرد }}}
تم الشكر بواسطة:
#9
- هل يمكن تفقيط كسور الرقم على الشكل التالي (مثال: 2530.26)
Two thousand Five Handred Thirty and 26/100 بدلاً من Two thousand Five Handred Thirty and Twenty Six
- كذلك هل يمكن تحديد عدد الأرقام بعد الفاصلة بحيث لا يمكن للمستخدم كتابة أكثر من رقمين بعدها

وشكرا جزيلاً على رحابة صدرك
{ اللهم علمنا ما ينفعنا وانفعنا بما علمتنا إنك أنت العليم الخبير }
الرد }}}
تم الشكر بواسطة:
#10
.....

ConvertNumber2
كود :
Public Shared Function ConvertNumber2(ByVal Input As Double) As String
    Dim _num As String = Input.ToString
    Dim _int As String = ConvertNum(System.Math.Floor(Input))
    Dim _dec As String = String.Empty
    If _num.Contains(".") Then
        _dec = _num.ToString.Substring(_num.IndexOf(".") + 1)
    End If
    Return _int & IIf(_dec <> "", " And " & _dec & "/100", "")
End Function

.....
الرد }}}
تم الشكر بواسطة: abuzzouz


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  خطوط تعريب الأرقام في كريستال ريبورت صالح عبدالله 4 271 16-02-24, 09:28 PM
آخر رد: صالح عبدالله
  [VB.NET] ارغب في كود إلزام المستخدم ادخال الأرقام محصور بعددين loay775 2 200 18-01-24, 05:02 PM
آخر رد: loay775
Question [VB.NET] اسم عمود الأرقام في DataGridView أبو خالد الشكري 6 606 03-12-23, 08:01 AM
آخر رد: أبو خالد الشكري
  طريقة تحويل الأرقام إلى حروف Adel27213 2 495 18-11-23, 01:40 AM
آخر رد: sniper2030
Sad مشكلة تقريب الأرقام Sql Server waataanys 1 416 13-11-23, 11:39 PM
آخر رد: waataanys
Sad مشكلة تقريب الأرقام Sql Server waataanys 0 323 12-11-23, 11:48 PM
آخر رد: waataanys
  إجبار المستخدم على إدخال عدد معين من الأرقام Ahmed.vb 6 656 20-10-23, 10:25 AM
آخر رد: atefkhalf2004
  [VB.NET] سؤال بخصوص العلامات العشرية والتقريب علاء الكبابي 2 519 05-06-23, 01:02 PM
آخر رد: علاء الكبابي
  مشكلة ترتيب وفرز الأرقام في الداتاقريدفيو صالح عبدالله 4 614 13-05-23, 12:29 PM
آخر رد: صالح عبدالله
  تفقيط حقول التقرير ReportViewer Tajaldeen 2 707 19-02-23, 11:27 PM
آخر رد: estefsar

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


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم