با سلام
من می خوام اعداد اعشار توسط نرم افزار شناسایی بشه....
در اصل رفم اعشارشون رو می خوام....
با تشکر....
Printable View
با سلام
من می خوام اعداد اعشار توسط نرم افزار شناسایی بشه....
در اصل رفم اعشارشون رو می خوام....
با تشکر....
راه حل رو پیدا کردم: (Console Application)
ضمیمه 156282
Console.Write("{0} Type Double Number: ", vbTab)
Dim Number As Double = Val(Console.ReadLine)
Console.WriteLine()
Dim Remain As Double = Number Mod 1
Console.WriteLine("{0} Decimal of your Number is: {1}", vbTab,
Math.Round(Remain / 0.1))
تابعی برای تبدیل عدد اعشار به عدد کامل:(حتی با اعشار 0.1)
ضمیمه 156283
Function RoundDecimal(Number As Double) As UInteger
Dim Remain As Double = Number Mod 1
Return If(Math.Round(Remain / 0.1) > 0, Fix(Number) + 1, Fix(Number))
End Functionٍ
سلام و روز خوش
برای پیدا کردن جزء صحیح ساده تر هم میتونین بنویسین: math.truncate ،
و برای قسمت اعشاری دقیقتر هم میتونین محاسبه کنین: تبدیل به دسیمال ،
و این که برای قسمت اعشاری نیازی به تقسیم نیست و یک منها ساده کافی هست.
Private Numbers() As Double = {
0, 1, 1.1, 2.02, 3.003, 4.0004, 5.00005, 6.000006, 7.0000007, 8.00000008, 9.000000009,
-1, -1.1, -2.02, -3.003, -4.0004, -5.00005, -6.000006, -7.0000007, -8.00000008, -9.000000009}
Dim decimal_part As Double, integer_part As Long
For Each number As Decimal In Numbers
integer_part = Math.Truncate(number)
decimal_part = number - integer_part
Console.WriteLine($"Number={number} , Integer Part={integer_part} , Decimal Part={decimal_part}")
Next
خروجی:
Number=0 , Integer Part=0 , Decimal Part=0Number=1 , Integer Part=1 , Decimal Part=0
Number=1.1 , Integer Part=1 , Decimal Part=0.1
Number=2.02 , Integer Part=2 , Decimal Part=0.02
Number=3.003 , Integer Part=3 , Decimal Part=0.003
Number=4.0004 , Integer Part=4 , Decimal Part=0.0004
Number=5.00005 , Integer Part=5 , Decimal Part=5E-05
Number=6.000006 , Integer Part=6 , Decimal Part=6E-06
Number=7.0000007 , Integer Part=7 , Decimal Part=7E-07
Number=8.00000008 , Integer Part=8 , Decimal Part=8E-08
Number=9.000000009 , Integer Part=9 , Decimal Part=9E-09
Number=-1 , Integer Part=-1 , Decimal Part=0
Number=-1.1 , Integer Part=-1 , Decimal Part=-0.1
Number=-2.02 , Integer Part=-2 , Decimal Part=-0.02
Number=-3.003 , Integer Part=-3 , Decimal Part=-0.003
Number=-4.0004 , Integer Part=-4 , Decimal Part=-0.0004
Number=-5.00005 , Integer Part=-5 , Decimal Part=-5E-05
Number=-6.000006 , Integer Part=-6 , Decimal Part=-6E-06
Number=-7.0000007 , Integer Part=-7 , Decimal Part=-7E-07
Number=-8.00000008 , Integer Part=-8 , Decimal Part=-8E-08
Number=-9.000000009 , Integer Part=-9 , Decimal Part=-9E-09
تفاوت محاسبه پس از تبدیل به دسیمال (کد به بالا)
با محاسبه روی مقدار double در مثال پایین مشخص هست:
Dim decimal_part As Double, integer_part As Long
For Each number As Double In Numbers
integer_part = Math.Truncate(number)
decimal_part = number - integer_part
Console.WriteLine($"Number={number} , Integer Part={integer_part} , Decimal Part={decimal_part}")
Next
Number=0 , Integer Part=0 , Decimal Part=0Number=1 , Integer Part=1 , Decimal Part=0
Number=1.1 , Integer Part=1 , Decimal Part=0.1
Number=2.02 , Integer Part=2 , Decimal Part=0.02
Number=3.003 , Integer Part=3 , Decimal Part=0.00300000000000011
Number=4.0004 , Integer Part=4 , Decimal Part=0.000399999999999956
Number=5.00005 , Integer Part=5 , Decimal Part=4.99999999998835E-05
Number=6.000006 , Integer Part=6 , Decimal Part=5.99999999995049E-06
Number=7.0000007 , Integer Part=7 , Decimal Part=7.00000000186662E-07
Number=8.00000008 , Integer Part=8 , Decimal Part=7.99999995138023E-08
Number=9.000000009 , Integer Part=9 , Decimal Part=9.00000074466334E-09
Number=-1 , Integer Part=-1 , Decimal Part=0
Number=-1.1 , Integer Part=-1 , Decimal Part=-0.1
Number=-2.02 , Integer Part=-2 , Decimal Part=-0.02
Number=-3.003 , Integer Part=-3 , Decimal Part=-0.00300000000000011
Number=-4.0004 , Integer Part=-4 , Decimal Part=-0.000399999999999956
Number=-5.00005 , Integer Part=-5 , Decimal Part=-4.99999999998835E-05
Number=-6.000006 , Integer Part=-6 , Decimal Part=-5.99999999995049E-06
Number=-7.0000007 , Integer Part=-7 , Decimal Part=-7.00000000186662E-07
Number=-8.00000008 , Integer Part=-8 , Decimal Part=-7.99999995138023E-08
Number=-9.000000009 , Integer Part=-9 , Decimal Part=-9.00000074466334E-09