چطور میتوانم یک مبلغ مثل 1,253,562 را به حروف تبدیل کنم بطور یک میلیون دویست وپنجاه وسه هزار و پانصدو هشتادو سه
چطور میتوانم یک مبلغ مثل 1,253,562 را به حروف تبدیل کنم بطور یک میلیون دویست وپنجاه وسه هزار و پانصدو هشتادو سه
سلام
سری به لینک زیر بزن چند تا سورس وی بی داره که به راحتی به وی بی دات نت تبدیل میشن
http://www.barnamenevis.org/sh...ad.php?t=15209
من این رو قبلاً نوشتم با یک الگوریتم خیلی ساده
اگر بدرت خورد بگو کل source رو بذارم شاید بتونی استفاده کنی
آخرین ویرایش به وسیله Navid7h : جمعه 08 مهر 1384 در 15:02 عصر
سلام دوست عزیز !
بسیار جالب بود !
میشه لطف کنید و کل SOURCE رو بگذارین
با تشکر
سعید
سلامنوشته شده توسط Navid7h
شزمنده ولی برنامت رو با عدد 1200000000 امتحان کن
ببخشید فایل قبلیم ناقص بود
فکر کنم این یکی دیگه کشکل و باگ نداشته باشه !
مرسی از توجه شما
آخرین ویرایش به وسیله Navid7h : جمعه 08 مهر 1384 در 16:26 عصر
سلام
عالی بود اگه میشه سورس یا DLL رو بذاری ممنون می شیم
سلام
اینم سورس
'
آخرین ویرایش به وسیله حامد مصافی : پنج شنبه 26 اردیبهشت 1387 در 13:47 عصر
این کد را اصلاح کردم جدیدتر هست و بهتر
<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>
لینوکس جان متشکرم