ورود

View Full Version : سوال: تشخیص اعداد اعشاری در ویژوال بیسیک چگونه است؟



ROSTAM2
جمعه 25 آبان 1403, 19:27 عصر
با سلام

من می خوام اعداد اعشار توسط نرم افزار شناسایی بشه....
در اصل رفم اعشارشون رو می خوام....

با تشکر....

ROSTAM2
جمعه 25 آبان 1403, 20:16 عصر
با سلام

من می خوام اعداد اعشار توسط نرم افزار شناسایی بشه....
در اصل رفم اعشارشون رو می خوام....

با تشکر....

راه حل رو پیدا کردم: (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))

ROSTAM2
شنبه 26 آبان 1403, 10:03 صبح
تابعی برای تبدیل عدد اعشار به عدد کامل:(حتی با اعشار 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ٍ

mazoolagh
شنبه 26 آبان 1403, 12:56 عصر
سلام و روز خوش

برای پیدا کردن جزء صحیح ساده تر هم میتونین بنویسین: 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