# برنامه نویسی با محصولات مایکروسافت > برنامه نویسی مبتنی بر Microsoft .Net Framework > VB.NET >  تبدیل مبلغ عددی به مبلغ حروفی

## zarrin_306

چطور میتوانم یک مبلغ مثل 1,253,562 را به حروف تبدیل کنم بطور یک میلیون دویست وپنجاه وسه هزار و پانصدو هشتادو سه

----------


## حامد مصافی

سلام
سری به لینک زیر بزن چند تا سورس وی بی داره که به راحتی به وی بی دات نت تبدیل میشن
http://www.barnamenevis.org/sh...ad.php?t=15209

----------


## Navid7h

من این رو قبلاً نوشتم با یک الگوریتم خیلی ساده
اگر بدرت خورد بگو کل source رو بذارم شاید بتونی استفاده کنی

----------


## saeedIRHA

سلام دوست عزیز !
بسیار جالب بود !
میشه لطف کنید و کل SOURCE رو بگذارین
با تشکر 
سعید

----------


## asilverisis

> من این رو قبلاً نوشتم با یک الگوریتم خیلی ساده
> اگر بدرت خورد بگو کل source رو بذارم شاید بتونی استفاده کنی


سلام 
شزمنده  ولی  برنامت رو با عدد  1200000000  امتحان کن

----------


## Navid7h

ببخشید فایل قبلیم ناقص بود
فکر کنم این یکی دیگه کشکل و باگ نداشته باشه !
مرسی از توجه شما

----------


## asilverisis

سلام 
عالی بود  اگه میشه سورس یا DLL رو  بذاری ممنون می شیم

----------


## حامد مصافی

سلام
اینم سورس








'

----------


## linux

این کد را اصلاح کردم جدیدتر هست و بهتر
<code>

Public Class NumberToString
    Private Shared Yekan() As String = {"صفر", "یک", "دو", "سه", "چهار", "پنج", "شش", "هفت", "هشت", "نه", "ده", "یازده", "دوازده", "سیزده", "چهارده", "پانزده", "شانزده", "هفده", "هیجده", "نوزده"}
    Private Shared Dahgan() As String = {"", "ده", "بیست", "سی", "چهل", "پنجاه", "شست", "هفتاد", "هشتاد", "نود", ""}
    Private Shared Sadgan() As String = {"", "یکصد", "دویست", "سیصد", "چهارصد", "پانصد", "ششصد", "هفتصد", "هشتصد", "نُه‌صد"}
    Private Shared h() As String = {"", " هزار", " میلیون", " میلیارد", " تریلیون", " تریلیارد"}
    Const va = " و "
    Private Shared Function DtoS(ByVal lDigit As Long) As String

        If lDigit = 0 Then Return Yekan(0) ' اگر عددی صفر باشد 
        Dim strDigit As String 'جهت ذخیره عدد ورودی به صورت استرینگ
        Dim strSubDigit(5) As String ' جهت ذخیره قسمتهای 3تایی عدد
        Dim sDigit As String = "" 'جهت ذخیره عدد بصورت متن فارسی
        Dim n As Short

        strDigit = lDigit.ToString
        Try
            Do Until strDigit.Length Mod 3 = 0
                strDigit = "0" & strDigit
            Loop

            For n = 3 To strDigit.Length Step 3
                strSubDigit(n / 3 - 1) = strDigit.Substring(strDigit.Length - n, 3)
            Next

            For n = 5 To 0 Step -1

                If Val(strSubDigit(n) <> 0) Then
                    Dim yek, dah, sad As Byte
                    Dim s As String = ""

                    yek = Val(strSubDigit(n).Substring(2, 1))
                    dah = Val(strSubDigit(n).Substring(1, 1))
                    sad = Val(strSubDigit(n).Substring(0, 1))

                    If sDigit <> "" Then
                        sDigit &= va
                    End If

                    If sad > 0 And (dah > 0 Or yek > 0) Then
                        s &= Sadgan(sad) & va
                    Else
                        s &= Sadgan(sad)
                    End If

                    If dah = 1 And yek > 0 Then
                        s &= Yekan(dah * 10 + yek)
                    End If

                    If dah > 1 And yek > 0 Then
                        s &= Dahgan(dah) & va & Yekan(yek)
                    End If

                    If dah >= 1 And yek = 0 Then
                        s &= Dahgan(dah)
                    End If

                    If dah = 0 And yek > 0 Then
                        s &= Yekan(yek)
                    End If

                    sDigit &= s & h(n)
                End If
            Next
            Return sDigit
        Catch ex As Exception
            Return "Err. number is so Big!!!"
        End Try
    End Function
    Public Shared Function DigitSpelling(ByVal lDigit As Long, Optional ByVal Currency As Boolean = False)
        If Currency Then
            Return DtoS(lDigit) & " ریال"
        Else
            Return DtoS(lDigit)
        End If
    End Function
End Class
</code>

----------


## vbapr2005

لینوکس جان متشکرم

----------

