PDA

View Full Version : تبدیل مبلغ عددی به مبلغ حروفی



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

حامد مصافی
پنج شنبه 07 مهر 1384, 11:44 صبح
سلام
سری به لینک زیر بزن چند تا سورس وی بی داره که به راحتی به وی بی دات نت تبدیل میشن
http://www.barnamenevis.org/forum/showthread.php?t=15209

Navid7h
پنج شنبه 07 مهر 1384, 15:36 عصر
من این رو قبلاً نوشتم با یک الگوریتم خیلی ساده
اگر بدرت خورد بگو کل source رو بذارم شاید بتونی استفاده کنی

saeedIRHA
پنج شنبه 07 مهر 1384, 23:47 عصر
سلام دوست عزیز !
بسیار جالب بود !
میشه لطف کنید و کل SOURCE رو بگذارین
با تشکر
سعید

asilverisis
جمعه 08 مهر 1384, 09:49 صبح
من این رو قبلاً نوشتم با یک الگوریتم خیلی ساده
اگر بدرت خورد بگو کل source رو بذارم شاید بتونی استفاده کنی

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

Navid7h
جمعه 08 مهر 1384, 15:00 عصر
ببخشید فایل قبلیم ناقص بود
فکر کنم این یکی دیگه کشکل و باگ نداشته باشه !
مرسی از توجه شما

asilverisis
شنبه 09 مهر 1384, 11:15 صبح
سلام
عالی بود اگه میشه سورس یا DLL رو بذاری ممنون می شیم

حامد مصافی
شنبه 09 مهر 1384, 13:05 عصر
سلام
اینم سورس








'

linux
شنبه 09 مهر 1384, 21:36 عصر
این کد را اصلاح کردم جدیدتر هست و بهتر
<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
شنبه 20 اسفند 1384, 04:37 صبح
لینوکس جان متشکرم