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