PDA

View Full Version : گفتگو: یک ماژول برای تبدیل عدد به حروف



mina.net
چهارشنبه 23 بهمن 1387, 20:12 عصر
سلام دوستان
یک ماژول برای تبدیل عدد به حروف طراحی کردم که برای برنامه های حسابداری خیلی کابرد دارد . دوستان برنامه را ببینید و نظر بدهید تا بهتر شود. برای دانلود کلیک کنید.
http://www.barbod87.blogfa.com/post-7.aspx

linux
چهارشنبه 23 بهمن 1387, 23:04 عصر
سلام دوستان
یک ماژول برای تبدیل عدد به حروف طراحی کردم که برای برنامه های حسابداری خیلی کابرد دارد . دوستان برنامه را ببینید و نظر بدهید تا بهتر شود. برای دانلود کلیک کنید.
http://www.barbod87.blogfa.com/post-7.aspx

می تونی بهترش کنی ، خلاصه تر و مفید تر
شما این عدد را چطور می خوانی 12،345؟
اول از سمت راست 3 رقم 3 رقم جدا می کنی ، با این کار جایگاه اعداد بدست می آید بعدش هر گروه را جدا خوانده و ارزش مکانی آن گروه را در آخر ذکر می کنید.
12 هزار و 345 شما اگر یک تابع داشته باشید که فقط 3 رقم را بخواند کافیست یعنی از عدد 0 تا 999 -
پس یک تابع درست کنید که فقط این اعداد را بگیرد.
یک آرایه درست کنید که این اعداد را سه رقم 3 رقم در آن ذخیره کند .
به ترتیب آرایه را به این تابع فرستاده برگشتی تابع را با توجه به مکان آن هجی کنید



Public Class Heji
Private Shared adad() As String = {"صفر", "یک", "دو", "سه", "چهار", "پنج", "شش", "هفت", "هشت", "نه", "ده", "یازده", "دوازده", "سیزده", "چهارده", "پانزده", "شانزده", "هفده", "هجده", "نوزده"}
Private Shared adad2() As String = {"", "ده", "بیست", "سی", "چهل", "پنجاه", "شصت", "هفتاد", "هشتاد", "نود"}
Private Shared adad3() As String = {"", "صد", "دویست", "سیصد", "چهارصد", "پانصد", "ششصد", "هفتصد", "هشتصد", "نهصد"}

Public Shared Function GetString(ByVal i As Integer)

' باید عدد را 3 رقم 3 رقم به تابع
'h بفرستی

Return Nothing
End Function
Private Shared Function H(ByVal i As Integer) As String
Dim _and As String = "و"
If i < 20 Then
Return adad(i)
End If
Dim yekan As Byte
Dim dahgan As Byte
Dim sadghan As Byte

yekan = i Mod 10
dahgan = Int(i / 10) Mod 10
sadghan = Int(i / 100) Mod 10
If yekan = 0 Then
If dahgan = 0 Then
Return adad3(sadghan)
End If
If sadghan = 0 Then
Return adad2(dahgan)
End If
Return String.Format("{0} {1} {2}", adad3(sadghan), _and, adad2(dahgan))
Else
If dahgan = 0 Or dahgan = 1 Then
Return String.Format("{0} {1} {2}", adad3(sadghan), _and, adad(dahgan * 10 + yekan))
End If
If sadghan = 0 Then
Return String.Format("{0} {1} {2}", adad2(dahgan), _and, adad(yekan))
End If
Return String.Format("{0} {1} {2} {3} {4}", adad3(sadghan), _and, adad2(dahgan), _and, adad(yekan))
End If

End Function
End Class


حوصله ام نکشید که کلاس را تمام کنم یک سال بیشتر بود با ویبی برنامه ننوشته بودم گفتن برای اینکه یادم نرود این را بنویسم

mina.net
جمعه 25 بهمن 1387, 18:30 عصر
سلام دوستان
ظاهرا فقط جناب linux زحمت نظر دادن را به خودشان دادن . من دارم یک ماژول دیگه طراحی می کنم با کد نویسی خیلی کمتر .
جناب linux من خوب متوجه همه قسمتهای کدی که نوشتید نشدم می شه بیشتر توضیح بدید.
منتظر برنامه کامل تر من باشید

Mehdi Asgari
جمعه 25 بهمن 1387, 21:46 عصر
http://www.codeproject.com/KB/miscctrl/NumberToText.aspx

nokhodsiah2001
شنبه 26 بهمن 1387, 15:23 عصر
سلام
من این کد رو فکر کنم تو همین سایت دیدم و یک مثال براش ساختم (vs2005) به امتحانش می ارزه

salehbagheri
یک شنبه 27 بهمن 1387, 23:17 عصر
یک ماژول برای تبدیل عدد به حروف طراحی کردم که برای برنامه های حسابداری خیلی کابرد دارد . دوستان برنامه را ببینید و نظر بدهید تا بهتر شود. برای دانلود کلیک کنید.



دوست عزيز! ماژول شما مشكل داره! عدد 1000000000 رو به صورت "يك ميليارد ميليون هزار" نشون ميده! در حالي كه بايد يك ميليارد نشون بده!


http://www.codeproject.com/KB/miscct...berToText.aspx (http://www.codeproject.com/KB/miscctrl/NumberToText.aspx)

مهندس! اعداد فارسي كجا و انگليسي كجا!!!

به زودي ماژول خودم رو براتون ميذارم كه بدون مشكله! (انشاءالله)

mina.net
دوشنبه 28 بهمن 1387, 10:02 صبح
دوست عزيز! ماژول شما مشكل داره! عدد 1000000000 رو به صورت "يك ميليارد ميليون هزار" نشون ميده! در حالي كه بايد يك ميليارد نشون بده!



مهندس! اعداد فارسي كجا و انگليسي كجا!!!

به زودي ماژول خودم رو براتون ميذارم كه بدون مشكله! (انشاءالله)
سلام دوستان
همان طور که جناب salehbagheri گفتند ماژول من دارای ایراداتی است. که الان دیگه برطرفش کردم. اما برنامه من با 2008 هست. به 2005 تبدیلش می کنم که همه بتونن استفاده کنن.البته ایندفعه هم انگلیسی داره هم فارسی.
منتظر باشید

salehbagheri
دوشنبه 28 بهمن 1387, 13:22 عصر
دوست عزيز! ببخشيد كه پيش دستي كردم!

اين هم يك كد تبديل عدد به حروف! قابليت تبديل اعداد به فارسي تا 18 رقم!

فعلا كه مشكلي نداره! اگه يافتيد باخبرم كنيد!

با تشكر!

salehbagheri
سه شنبه 29 بهمن 1387, 13:48 عصر
با امكانات بيشتر Update شد!
http://barnamenevis.org/forum/showpost.php?p=680859&postcount=22

دوستان اگر در مورد اضافه كردن امكانات بيشتر، نظر يا پيشنهادي دارند بفرمايند!

mina.net
سه شنبه 29 بهمن 1387, 19:09 عصر
دوست عزيز! ببخشيد كه پيش دستي كردم!

اين هم يك كد تبديل عدد به حروف! قابليت تبديل اعداد به فارسي تا 18 رقم!

فعلا كه مشكلي نداره! اگه يافتيد باخبرم كنيد!

با تشكر!
سلام دوستان
خواهش می کنم از برنامه ای که دوستان می زارن بیشتر استفاده می کنیم نه ضرر هر چند هنوز برنامه رو ندیدم ولی حتما می بینم. خوب من برنامه جدیدم را با تغییرات عمده برای شما می زارم این برنامه هم برای اعداد فارسی و هم انگلیسی به کار می ره . یعنی دو تا ماژول می شه . من جنبه های مختلف رو امتحان کردم غلط نداشت البته قسمت انگلیسیش دانلود شده با کمی تغییرات که بعضی جاها and نمی زاره اگه دوستان وقت دارن درست کنن اینجا بزارن. منتظر نظرات شما هستم.
برای دانلود به لینک http://www.barbod87.blogfa.com برید
در ضمن اگه دوستان یک سایت فری و خوب که هر چند وقت یک بار اذیت نکونه سراغ دارن برای آپلود به من معرفی کنن ممنون می شم . اگه لینک مستقم باشه بهتر هست.

linux
سه شنبه 29 بهمن 1387, 22:54 عصر
سلام دوستان
ظاهرا فقط جناب linux زحمت نظر دادن را به خودشان دادن . من دارم یک ماژول دیگه طراحی می کنم با کد نویسی خیلی کمتر .
جناب linux من خوب متوجه همه قسمتهای کدی که نوشتید نشدم می شه بیشتر توضیح بدید.
منتظر برنامه کامل تر من باشید

شما تابع H را مطالعه کنید همه موارد را خواهید فهمید.



'babak bakhshayesh
'babak@bbp.ir
'1387/11/29
'ver 1.0
Imports System.Text

Public Class Heji
Private Shared adad() As String = {"صفر", "یک", "دو", "سه", "چهار", "پنج", "شش", "هفت", "هشت", "نه", "ده", "یازده", "دوازده", "سیزده", "چهارده", "پانزده", "شانزده", "هفده", "هجده", "نوزده"}
Private Shared adad2() As String = {"", "ده", "بیست", "سی", "چهل", "پنجاه", "شصت", "هفتاد", "هشتاد", "نود"}
Private Shared adad3() As String = {"", "صد", "دویست", "سیصد", "چهارصد", "پانصد", "ششصد", "هفتصد", "هشتصد", "نهصد"}
Private Shared adad4() As String = {"", "هزار", "میلیون", "میلیارد", "تریلیارد"}
Private Shared _and As String = "و"
Public Shared Function GetString(ByVal i As Integer)

' باید عدد را 3 رقم 3 رقم به تابع
'h بفرستی
Dim nums(5) As Short

Dim sb As New StringBuilder
Dim m As Short
Dim f As Boolean
Dim Counter As Byte = 0
Do While (i > 0)
m = i Mod 1000
nums(Counter) = m
i = i \ 1000
Counter += 1
Loop
For n As Short = 5 To 0 Step -1

If nums(n) <> 0 Then
f = True
If n > 0 Then
sb.Append(String.Format("{0} {1}", H(nums(n)), adad4(n)))
If nums(n - 1) <> 0 Then
sb.Append(" ") : sb.Append(_and) : sb.Append(" ")
End If
Else
If f And nums(1) = 0 Then
sb.Append(" ")
sb.Append(_and)
sb.Append(" ")
End If
sb.Append(String.Format("{0} {1}", H(nums(n)), adad4(n)))
End If
End If
Next
Return sb.ToString()
End Function
Private Shared Function H(ByVal i As Integer) As String

If i < 20 Then
Return adad(i)
End If
Dim yekan As Byte
Dim dahgan As Byte
Dim sadghan As Byte
yekan = i Mod 10
dahgan = Int(i / 10) Mod 10
sadghan = Int(i / 100) Mod 10

If yekan = 0 Then
If dahgan = 0 Then
Return adad3(sadghan)
End If
If sadghan = 0 Then
Return adad2(dahgan)
End If
Return String.Format("{0} {1} {2}", adad3(sadghan), _and, adad2(dahgan))
Else
If dahgan = 0 Or dahgan = 1 Then
Return String.Format("{0} {1} {2}", adad3(sadghan), _and, adad(dahgan * 10 + yekan))
End If
If sadghan = 0 Then
Return String.Format("{0} {1} {2}", adad2(dahgan), _and, adad(yekan))
End If
Return String.Format("{0} {1} {2} {3} {4}", adad3(sadghan), _and, adad2(dahgan), _and, adad(yekan))
End If

End Function
End Class

mina.net
پنج شنبه 01 اسفند 1387, 11:02 صبح
دوستان سلام
خواهش می کنم این مطلب را تمام شده فرض نکنید. اگه در مورد برنامه ای که گزاشتم نظری دارید بفرمائید اعمال کنم.
برای ادامه کار می تونیم روی اعداد اعشاری کار کنیم یعنی چطور عدد اعشاری را به حروف تبدیل کنیم . در ضمن اون کدی که برای قسمت انگلیسی برنامه نوشتم یک کمی ایراد داره اگه می شه یکی زحمت شو بکشه .ایرادش اینه که بعضی وقتا یه جاهای که باید and بزاره نمی زاره. برای راحتی کار شما لینک برنامه را دوباره می زارم تا بهتر بهش دسترسی داشته باشید.http://www.barbod87.blogfa.com/
در ضمن اگه دوستان یک سایت فری و خوب که هر چند وقت یک بار اذیت نکونه سراغ دارن برای آپلود به من معرفی کنن ممنون می شم . اگه لینک مستقم باشه بهتر هست.

salehbagheri
پنج شنبه 01 اسفند 1387, 12:10 عصر
دوست عزيز! وبلاگت باز نميشه! چيكار كنيم!


برای ادامه کار می تونیم روی اعداد اعشاری کار کنیم یعنی چطور عدد اعشاری را به حروف تبدیل کنیم .

پيشنهاد خوبيه! من كه به زودي دست بكار ميشم!


در ضمن اگه دوستان یک سایت فری و خوب که هر چند وقت یک بار اذیت نکونه سراغ دارن برای آپلود به من معرفی کنن ممنون می شم . اگه لینک مستقم باشه بهتر هست.

اگر جيميل (Gmail) داريد ميتونيد در اونجا آپلود كنيد! لينكش هم مستقيمه!

mina.net
پنج شنبه 01 اسفند 1387, 20:22 عصر
دوست عزيز! وبلاگت باز نميشه! چيكار كنيم!



پيشنهاد خوبيه! من كه به زودي دست بكار ميشم!



اگر جيميل (Gmail) داريد ميتونيد در اونجا آپلود كنيد! لينكش هم مستقيمه!

دوست عزیز من خودم روی لینکی گذاشتم کلیک می کنم باز می شه نمی دونم شما چرا مشکل دارید. و در مورد gmail که گفتی من نمی دونم تو gimal چطور باید upload کنم. اگه می تونید تو یک پیام خصوصی برای من توضیح بدید یا هر کسی که می تونه یه من کمک کنه.

mostafaaa
پنج شنبه 01 اسفند 1387, 23:18 عصر
سلام دوستان من
منهم قبلا كلاسي براي تبديل اعداد به حروف نوشته بودم كه در كامپوترم داشت خاك ميخورد ، تلاش دوستان رو ديدم گفتم اينجا بزارمش شايد به درد دوستان بخوره. بيشتر سعي كردم مختصر بنويسمش كه كمتر از 70 خط كد نشد. اميدوارم به دردتون بخوره و مشكلي نداشته باشه :

Public Class NumToStr
Private Class Numbers
Public intNum As Integer
Public strNum As String
Sub New(ByVal int As Integer, ByVal str As String)
intNum = int
strNum = str
End Sub
End Class
Private listOFNumbers() As Numbers = {New Numbers(1, "يك"), New Numbers(2, "دو"), New Numbers(3, "سه"), New Numbers(4, "چهار"), New Numbers(5, "پنج"), New Numbers(6, "شش") _
, New Numbers(7, "هفت"), New Numbers(8, "هشت"), New Numbers(9, "نه"), New Numbers(10, "ده"), New Numbers(11, "يازده"), New Numbers(12, "دوازده") _
, New Numbers(13, "سيزده"), New Numbers(14, "چهارده"), New Numbers(15, "پانزده"), New Numbers(16, "شانزده"), New Numbers(17, "هفده"), New Numbers(18, "هجده") _
, New Numbers(19, "نوزده"), New Numbers(20, "بيست"), New Numbers(30, "سي"), New Numbers(40, "چهل"), New Numbers(50, "پنجاه"), New Numbers(60, "شصت"), New Numbers(70, "هفتاد") _
, New Numbers(80, "هشتاد"), New Numbers(90, "نود"), New Numbers(100, "صد"), New Numbers(200, "دويست"), New Numbers(300, "سيصد"), New Numbers(400, "چهارصد"), New Numbers(500, "پانصد") _
, New Numbers(600, "ششصد"), New Numbers(700, "هفتصد"), New Numbers(800, "هشتصد"), New Numbers(900, "نهصد")}
Public Function GetStringOfNumber(ByVal num As Long) As String
Dim Part() As String = Split(FormatNumber(num, 0), ",")
Select Case Part.Length
Case Is = 1 And Not CInt(Part(0)) = 0
Return GetThree(Part(0))
Case Is = 2
If CInt(Part(1)) = 0 Then
Return GetThree(Part(0)) & " هزار " : Else
Return GetThree(Part(0)) & " هزار و " & GetThree(Part(1))
End If
Case Is = 3
If CInt(Part(1)) + CInt(Part(2)) = 0 Then
Return GetThree(Part(0)) & " ميليون " : Else
Return GetThree(Part(0)) & " ميليون و " & GetStringOfNumber(Part(1) & Part(2))
End If
Case Is = 4
If CInt(Part(1)) + CInt(Part(2)) + CInt(Part(3)) = 0 Then
Return GetThree(Part(0)) & " ميليارد " : Else
Return GetThree(Part(0)) & " ميليارد و " & GetStringOfNumber(Part(1) & Part(2) & Part(3))
End If
Case Is = 5
If CInt(Part(1)) + CInt(Part(2)) + CInt(Part(3)) + CInt(Part(4)) = 0 Then
Return GetThree(Part(0)) & " بيليارد " : Else
Return GetThree(Part(0)) & " بيليارد و " & GetStringOfNumber(Part(1) & Part(2) & Part(3) & Part(4))
End If
End Select
Return Nothing
End Function
Private Function GetThree(ByVal Num As Integer) As String
Dim Str As String = Num.ToString
Select Case Str.Length
Case Is = 1
Return Search(Num)
Case Is = 2
If Str.Substring(0, 1) = 1 Or Str.Substring(1, 1) = "0" Then
Return Search(Num) : Else
Return Search(Str.Substring(0, 1) & "0") & " و " & Search(Str.Substring(1, 1))
End If
Case Is = 3
If Str.Substring(1, 2) = "00" Then
Return Search(Num) : Else
Return Search(Str.Substring(0, 1) & "00") & " و " & GetThree(Str.Substring(1, 2))
End If
End Select
Return Nothing
End Function
Private Function Search(ByVal Num As Integer) As String
For i As Integer = 0 To listOFNumbers.Length - 1
If listOFNumbers(i).intNum = Num Then Return listOFNumbers(i).strNum
Next
Return Nothing
End Function
End Class

يا علي

linux
یک شنبه 04 اسفند 1387, 10:58 صبح
سلام دوستان من
منهم قبلا كلاسي براي تبديل اعداد به حروف نوشته بودم كه در كامپوترم داشت خاك ميخورد ، تلاش دوستان رو ديدم گفتم اينجا بزارمش شايد به درد دوستان بخوره. بيشتر سعي كردم مختصر بنويسمش كه كمتر از 70 خط كد نشد. اميدوارم به دردتون بخوره و مشكلي نداشته .... End Function
End Class
[/code]يا علي

چکاری هست که عدد را تبدیل به استرینگ کنید و بعدش روش پردازش انجام بدهید!
کار کردن رو اعداد که به مراتب سریعتر و راحتر هست.

mostafaaa
یک شنبه 04 اسفند 1387, 12:55 عصر
سلام دوست من

چکاری هست که عدد را تبدیل به استرینگ کنید و بعدش روش پردازش انجام بدهید!
کار کردن رو اعداد که به مراتب سریعتر و راحتر هست.
در این نمونه خاص فرقی نمیکه!
پردازش به قدری پایینه که عملا فرقی نمیکنه!
من بیشتر به جنبه راحتی و کم بودن کد توجه کرده بودم، علاوه بر اون اینکه ، همانطور که گفتم من این کلاس رو خیلی وقت پیش نوشته بودم.
شما اگه دوست داری میتونی اصلاحش کنی بزاری دوستان استفاده کنند
یا علی

linux
یک شنبه 04 اسفند 1387, 15:44 عصر
سلام دوست من

در این نمونه خاص فرقی نمیکه!
پردازش به قدری پایینه که عملا فرقی نمیکنه!
من بیشتر به جنبه راحتی و کم بودن کد توجه کرده بودم، علاوه بر اون اینکه ، همانطور که گفتم من این کلاس رو خیلی وقت پیش نوشته بودم.
شما اگه دوست داری میتونی اصلاحش کنی بزاری دوستان استفاده کنند
یا علی

من کلاسی که نوشتم 3-4 پست بالاتر هست ، البته فکر کنم یک اشکال داره. کلا عملیات ریاضی سریعتر انجام می شود.

mostafaaa
یک شنبه 04 اسفند 1387, 17:50 عصر
سلام دوست من
اینم ریاضیش :

Public Class NumToStr
Private Class Numbers
Public intNum As Integer
Public strNum As String
Sub New(ByVal int As Integer, ByVal str As String)
intNum = int
strNum = str
End Sub
End Class
Private listOFNumbers() As Numbers = {New Numbers(1, "يك"), New Numbers(2, "دو"), New Numbers(3, "سه"), New Numbers(4, "چهار"), New Numbers(5, "پنج"), New Numbers(6, "شش") _
, New Numbers(7, "هفت"), New Numbers(8, "هشت"), New Numbers(9, "نه"), New Numbers(10, "ده"), New Numbers(11, "يازده"), New Numbers(12, "دوازده") _
, New Numbers(13, "سيزده"), New Numbers(14, "چهارده"), New Numbers(15, "پانزده"), New Numbers(16, "شانزده"), New Numbers(17, "هفده"), New Numbers(18, "هجده") _
, New Numbers(19, "نوزده"), New Numbers(20, "بيست"), New Numbers(30, "سي"), New Numbers(40, "چهل"), New Numbers(50, "پنجاه"), New Numbers(60, "شصت"), New Numbers(70, "هفتاد") _
, New Numbers(80, "هشتاد"), New Numbers(90, "نود"), New Numbers(100, "صد"), New Numbers(200, "دويست"), New Numbers(300, "سيصد"), New Numbers(400, "چهارصد"), New Numbers(500, "پانصد") _
, New Numbers(600, "ششصد"), New Numbers(700, "هفتصد"), New Numbers(800, "هشتصد"), New Numbers(900, "نهصد")}
Public Function GetStringOfNumber(ByVal num As Long) As String
Dim Part() As String = Split(FormatNumber(num, 0), ",")
Select Case Part.Length
Case Is = 1 And Not CInt(Part(0)) = 0
Return GetThree(Part(0))
Case Is = 2
If CInt(Part(1)) = 0 Then
Return GetThree(Part(0)) & " هزار " : Else
Return GetThree(Part(0)) & " هزار و " & GetThree(Part(1))
End If
Case Is = 3
If CInt(Part(1)) + CInt(Part(2)) = 0 Then
Return GetThree(Part(0)) & " ميليون " : Else
Return GetThree(Part(0)) & " ميليون و " & GetStringOfNumber(Part(1) & Part(2))
End If
Case Is = 4
If CInt(Part(1)) + CInt(Part(2)) + CInt(Part(3)) = 0 Then
Return GetThree(Part(0)) & " ميليارد " : Else
Return GetThree(Part(0)) & " ميليارد و " & GetStringOfNumber(Part(1) & Part(2) & Part(3))
End If
Case Is = 5
If CInt(Part(1)) + CInt(Part(2)) + CInt(Part(3)) + CInt(Part(4)) = 0 Then
Return GetThree(Part(0)) & " بيليارد " : Else
Return GetThree(Part(0)) & " بيليارد و " & GetStringOfNumber(Part(1) & Part(2) & Part(3) & Part(4))
End If
End Select
Return Nothing
End Function
Private Function GetThree(ByVal Num As Integer) As String
Select Case Num
Case Is < 10
Return Search(Num)
Case Is < 100
If Num <= 20 Or (Num Mod 10) = 0 Then
Return Search(Num) : Else
Return Search((Math.Floor(Num / 10)) * 10) & " و " & Search(Num - ((Math.Floor(Num / 10)) * 10))
End If
Case Is < 1000
If Num Mod 100 = 0 Then
Return Search(Num) : Else
Return Search((Math.Floor(Num / 100)) * 100) & " و " & GetThree(Num - ((Math.Floor(Num / 100)) * 100))
End If
End Select
Return Nothing
End Function
Private Function Search(ByVal Num As Integer) As String
For i As Integer = 0 To listOFNumbers.Length - 1
If listOFNumbers(i).intNum = Num Then Return listOFNumbers(i).strNum
Next
Return Nothing
End Function
End Class

salehbagheri
دوشنبه 05 اسفند 1387, 00:21 صبح
سلام دوستان!

من كه به كلي گيج شدم! :متعجب::گیج:

ترتيب درست پسوندهاي عددي به چه صورت هست؟

هزار - ميليون - ميليارد - بيليون - بيليارد - تريليون - تيليارد - ...
هزار - ميليون - ميليارد - بيليارد - بيليون - ...
هزار - ميليون - ميليارد - بيليون - تريليون - ...
:گیج::متفکر:

linux
دوشنبه 05 اسفند 1387, 10:03 صبح
سلام دوستان!

من كه به كلي گيج شدم! :متعجب::گیج:

ترتيب درست پسوندهاي عددي به چه صورت هست؟

هزار - ميليون - ميليارد - بيليون - بيليارد - تريليون - تيليارد - ...
هزار - ميليون - ميليارد - بيليارد - بيليون - ...
هزار - ميليون - ميليارد - بيليون - تريليون - ...

:گیج::متفکر:

از اینجا می توانی ببینی http://en.wikipedia.org/wiki/SI_prefix

mostafaaa
دوشنبه 05 اسفند 1387, 10:16 صبح
سلام دوستان
البته یک چیز رو فراموش نکنید!!

milliard, billion, number equal to a thousand millions, 1 000 000 000 (in the USA and France); number equal to a million millions, 1 000 000 000 000 (in Britain)



billion,number equal to a thousand millions, 1 000 000 000 (in the USA and France); number equal to a million millions, 1 000 000 000 000 (in Britain)

trillion, number equaling one thousand billions; one followed by 12 zeros (in the U.S. and France); one followed by 18 zeros (in Great Britain and Germany)

و الا آخر ...
تقریبا تمامی این نام ها هم در سیستم انگلیسی و هم آمریکایی مشابه هستند ولی مقادیر متفاوته!!
یا علی

salehbagheri
سه شنبه 06 اسفند 1387, 12:23 عصر
تقریبا تمامی این نام ها هم در سیستم انگلیسی و هم آمریکایی مشابه هستند ولی مقادیر متفاوته!!


دوست عزيز! سيستم آمريكا و انگليس رو بي خيال! سيستم فارسي چه جوريه؟!!

mostafaaa
سه شنبه 06 اسفند 1387, 17:38 عصر
سلام دوست من
ما چیزی به اسم سیستم فارسی نداریم ولی در اکثر مواقع توی ایران ملاک سیستم آمریکایی هستش.

mina.net
چهارشنبه 07 اسفند 1387, 18:31 عصر
سلام دوست من
ما چیزی به اسم سیستم فارسی نداریم ولی در اکثر مواقع توی ایران ملاک سیستم آمریکایی هستش.
سلام دوستان چرا داین قد به سیستم امریکای انگلیسی گیر دادید اگه یکی وقت داره برنامه را برای اعداد با اعشاری تکمیل کنه فکر کنم بهتره اون موضوعی شما راجع بهش بحث می کنید در صلاحیت یک استاد زبان انگلیسی و ریاضی هست که با یک پرسش حل می شه دوستان اگه یک منبع قابل اعتماد دارند بپرسن و اینجا بزارن تا پرونده امریکای انگلیسی بسته بشه.
بد میگم؟؟

linux
چهارشنبه 07 اسفند 1387, 22:47 عصر
سلام دوستان چرا داین قد به سیستم امریکای انگلیسی گیر دادید اگه یکی وقت داره برنامه را برای اعداد با اعشاری تکمیل کنه فکر کنم بهتره اون موضوعی شما راجع بهش بحث می کنید در صلاحیت یک استاد زبان انگلیسی و ریاضی هست که با یک پرسش حل می شه دوستان اگه یک منبع قابل اعتماد دارند بپرسن و اینجا بزارن تا پرونده امریکای انگلیسی بسته بشه.
بد میگم؟؟

برای اعداد اعشاری معمولا : دهم ، صدم و هزارم مورد استفاده هست که با همین کدی که من نوشتم با کمی تغییرات می توانید بسازید

saman_itc
جمعه 09 اسفند 1387, 00:09 صبح
آقا linux کسی انجامش نداده.خودت زحمتشو بکش

mina.net
یک شنبه 11 اسفند 1387, 00:07 صبح
برای اعداد اعشاری معمولا : دهم ، صدم و هزارم مورد استفاده هست که با همین کدی که من نوشتم با کمی تغییرات می توانید بسازید
جناب LINUX سلام
فکر می کنم غیر از کدی که شما گذاشتید چند برنامه دیگه هم بچه های دیگه اینجا گذاشتند. فکر می کنم وقتش شده یک حرکت جدیدی انجام بدید . من خیلی وقت ندارم این روزها اما اگر شما انجام ندادید من با کمی تاخیر حتما انجام می دم.

mina.net
جمعه 16 اسفند 1387, 12:54 عصر
سلام دوستان
راستی کسی برای اعداد اعشاری نمی خواد کاری انجام بده.

anooshiran
جمعه 16 اسفند 1387, 20:16 عصر
سلام دوستان!

من كه به كلي گيج شدم! :متعجب::گیج:



ترتيب درست پسوندهاي عددي به چه صورت هست؟

هزار - ميليون - ميليارد - بيليون - بيليارد - تريليون - تيليارد - ...
هزار - ميليون - ميليارد - بيليارد - بيليون - ...
هزار - ميليون - ميليارد - بيليون - تريليون - ...
:گیج::متفکر:


سلام دوستان عزيز

براي خواندن اعداد خيلي بزرگ بايد از استاندارد رايج بين المللي استفاده كنيم.اين استاندارد از ريشه هاي واژه هاي لاتيني ، يا زبانهاي ديگر اروپايي براي اعداد يزرگ انتخاب گرديده است.
استاندارد زير رايجترين استاندارد نامگذاري حروف در جهان است كه فرهنگستان زبان پارسي نيز آن را پذيرفته است . در ذيل نوع خواندن صحيح اعداد و چرايي اينگونه نامگذاري را توضيح داده ام.

اميدوارم كه مورد استفاده دوستان قرار گيرد.


يك ميليون Million 1,000,000

در زبان لاتين mile به معني هزار به كار رفته است. يك ميليون يك دسته سه تايي صفر بيشتر از هزار دارد.

يك بيليون Billion 1,000,000,000

در بعضي از كشورها اين عدد را ميليارد (Milliard ) مي نامند. در زبان لاتين bi به معناي دو است. يك بيليون دو دسته سه تايي صفر بيشتر از هزار دارد.

يك تريليون Trillion 1,000,000,000,000

در زبان لاتين tri به معناي سه است. يك تريليون سه دسته سه تايي صفر بيشتر از هزار دارد.

و به همين ترتيب :

كادريليون Quadrillion , quad = 4

كنتيليون Quintillion , quint = 5

سيكستيليون Sixtillion , six = 6

سپتيليون Septillion , sept = 7


اَُكتيليون Octillion , oct = 8


نونيليون Nonillion , non = 9


دسيليون Decillion , dec = 10

shahab_ss
دوشنبه 10 فروردین 1388, 09:27 صبح
این نمونه رو هم ببینید،:لبخندساده:

kosar ranjbar
دوشنبه 14 اردیبهشت 1388, 22:21 عصر
کسی نتوانست تبدیل عدد اعشاری به حروف را بدست بیاورد .

sh
چهارشنبه 04 اردیبهشت 1392, 21:28 عصر
با سلام به دوستان جدید و قدیم
در طی این 5 سال گذشته کمتر فرصت شد که به سایت سر بزنم. چند روز پیش که این کد رو دیدم تصمیم گرفتم برای نیاز خودم هم که شده قسمت اعشار رو بهش اضافه کنم. البته سورس دیگری نیز از دوست خوبم آقای بابک بخشایش هست که اونم با کمی تغییر این قابلیت رو دارد.
کد زیر را می توان بهینه تر نیز کرد. مثلا کنترل عدم وجود دو علامت "." برای ارقام اعشاری
انشالله که مفید واقع شود

Public Class NumToStr1
Private Class Numbers
Public intNum As Integer
Public strNum As String
Sub New(ByVal int As Integer, ByVal str As String)
intNum = int
strNum = str
End Sub
End Class
Private listOFNumbers() As Numbers = {New Numbers(0, "صفر"), New Numbers(1, "يك"), New Numbers(2, "دو"), New Numbers(3, "سه"), New Numbers(4, "چهار"), New Numbers(5, "پنج"), New Numbers(6, "شش") _
, New Numbers(7, "هفت"), New Numbers(8, "هشت"), New Numbers(9, "نه"), New Numbers(10, "ده"), New Numbers(11, "يازده"), New Numbers(12, "دوازده") _
, New Numbers(13, "سيزده"), New Numbers(14, "چهارده"), New Numbers(15, "پانزده"), New Numbers(16, "شانزده"), New Numbers(17, "هفده"), New Numbers(18, "هجده") _
, New Numbers(19, "نوزده"), New Numbers(20, "بيست"), New Numbers(30, "سي"), New Numbers(40, "چهل"), New Numbers(50, "پنجاه"), New Numbers(60, "شصت"), New Numbers(70, "هفتاد") _
, New Numbers(80, "هشتاد"), New Numbers(90, "نود"), New Numbers(100, "یکصد"), New Numbers(200, "دويست"), New Numbers(300, "سيصد"), New Numbers(400, "چهارصد"), New Numbers(500, "پانصد") _
, New Numbers(600, "ششصد"), New Numbers(700, "هفتصد"), New Numbers(800, "هشتصد"), New Numbers(900, "نهصد")}
Private listOfDesimals() As String = {" دهم", " صدم", " هزارم"}
Dim isdes As Boolean = False
Public Function GetStringOfNumber(ByVal num) As String
Dim dot As Int32 = 0
Dim des As Int32 = 0
Dim fix As Int64 = 0
If num.ToString.Contains(".") And num.ToString.EndsWith(".") = False Then
isdes = True
dot = num.ToString.IndexOf(".") + 1
des = Convert.ToInt32(num.ToString.Substring(dot))

fix = Convert.ToInt64(num.ToString.Substring(0, dot - 1))
Else
fix = num
End If
If fix.ToString.Length > 15 Then
Return "عدد وارد شده نامتعارف می باشد"
Exit Function
End If

Dim Part() As String = Split(FormatNumber(fix, 0), ",")
Select Case Part.Length
Case Is = 1 'And Not CInt(Part(0)) = 0
Return GetThree(Part(0)) & If(des, " ممیز " & GetThree(des) & searchdes(des), Nothing)
Case Is = 2
If CInt(Part(1)) = 0 Then
Return GetThree(Part(0)) & " هزار " & If(des, " ممیز " & GetThree(des) & searchdes(des), Nothing) : Else
Return GetThree(Part(0)) & " هزار و " & GetThree(Part(1)) & If(des, " ممیز " & GetThree(des) & searchdes(des), Nothing)
End If
Case Is = 3
If CInt(Part(1)) + CInt(Part(2)) = 0 Then
Return GetThree(Part(0)) & " ميليون " & If(des, " ممیز " & GetThree(des) & searchdes(des), Nothing) : Else
Return GetThree(Part(0)) & " ميليون و " & GetStringOfNumber(Part(1) & Part(2)) & If(des, " ممیز " & GetThree(des) & searchdes(des), Nothing)
End If
Case Is = 4
If CInt(Part(1)) + CInt(Part(2)) + CInt(Part(3)) = 0 Then
Return GetThree(Part(0)) & " ميليارد " & If(des, " ممیز " & GetThree(des) & searchdes(des), Nothing) : Else
Return GetThree(Part(0)) & " ميليارد و " & GetStringOfNumber(Part(1) & Part(2) & Part(3)) & If(des, " ممیز " & GetThree(des) & searchdes(des), Nothing)
End If
Case Is = 5
If CInt(Part(1)) + CInt(Part(2)) + CInt(Part(3)) + CInt(Part(4)) = 0 Then
Return GetThree(Part(0)) & " هزار " & If(des, " ممیز " & GetThree(des) & searchdes(des), Nothing) : Else
Return GetThree(Part(0)) & " هزار و " & GetStringOfNumber(Part(1) & Part(2) & Part(3) & Part(4)) & If(des, " ممیز " & GetThree(des) & searchdes(des), Nothing)
End If
End Select
Return Nothing
End Function
Private Function GetThree(ByVal Num As Integer) As String
Select Case Num
Case Is < 10
Return Search(Num)
Case Is < 100
If Num <= 20 Or (Num Mod 10) = 0 Then
Return Search(Num) : Else
Return Search((Math.Floor(Num / 10)) * 10) & " و " & Search(Num - ((Math.Floor(Num / 10)) * 10))
End If
Case Is < 1000
If Num Mod 100 = 0 Then
Return Search(Num) : Else
Return Search((Math.Floor(Num / 100)) * 100) & " و " & GetThree(Num - ((Math.Floor(Num / 100)) * 100))
End If
End Select
Return Nothing
End Function
Private Function Search(ByVal Num As Integer) As String
For i As Integer = 0 To listOFNumbers.Length - 1
If listOFNumbers(i).intNum = Num Then Return listOFNumbers(i).strNum
Next
Return Nothing
End Function
Private Function searchdes(ByVal dess As Integer) As String
Select Case dess
Case Is < 10
Return listOfDesimals(0)
Case Is < 100
Return listOfDesimals(1)
Case Is < 1000
Return listOfDesimals(2)
End Select
Return Nothing
End Function
End Class

sh
جمعه 06 اردیبهشت 1392, 15:25 عصر
خط 22 تا 34 را با کدهای زیر عوض کنید


If num.ToString.Length > 15 Or num.ToString.EndsWith(".") = True Or num.ToString.StartsWith(".") = True Then

Return "عدد وارد شده نامتعارف می باشد"

Exit Function

End If

If num Mod 1 <> 1 Then

isdec = True

dot = num.ToString.IndexOf(".") + 1

dec = Convert.ToInt32(num.ToString.Substring(dot))

fix = Math.Truncate(Convert.ToDecimal(num))

Else

fix = Convert.ToInt64(num)

End If