PDA

View Full Version : نمایش قسمت صحیح اعداد اعشاری



سپهر-111
چهارشنبه 07 فروردین 1392, 11:45 صبح
سلام دوستان و اساتید گرامی
تبریک سال نو به همه دوستان و اساتید ارزشمند

چطور میشه فقط قسمت صحیح اعداد اعشاری نشون داد ؟؟
مثلا : 98.98278560250391
فقط 98 نشون داده بشه (البته نمیخوام راند بشه چون اگه راند بشه میشه 99 ! )

ممنون میشم راهنمایی بفرمایید

SlowCode
چهارشنبه 07 فروردین 1392, 11:50 صبح
سلام
از Int یا CInt استفاده کن.

soheila2012
چهارشنبه 07 فروردین 1392, 12:07 عصر
cint به نزدیکترین عدد گرد میکنه
این باید عددی که قبل از دات (.) البته سمت چپ رو نشون بده.
با توابع رشته ای میشه

soheila2012
چهارشنبه 07 فروردین 1392, 12:08 عصر
Private Sub Command1_Click()
Dim a As Integer
a = Val(Text1.Text)
Print CInt(a)
End Sub

اعداد رو گرد میکنه

سپهر-111
چهارشنبه 07 فروردین 1392, 12:10 عصر
cint به نزدیکترین عدد گرد میکنه
این باید عددی که قبل از دات (.) البته سمت چپ رو نشون بده.
با توابع رشته ای میشه

ممنون از پاسخ شما و محسن عزیز
ایا راهی نداره که به صورت رشته ای نباشه . . .

soheila2012
چهارشنبه 07 فروردین 1392, 12:11 عصر
Dim a As String
a = Text1.Text
Print Left(a, 2)
اگه فقط با دو عدد باشه

سپهر-111
چهارشنبه 07 فروردین 1392, 12:17 عصر
Dim a As String
a = Text1.Text
Print Left(a, 2)
اگه فقط با دو عدد باشه


ممنون از شما

امتحان کردم همون Int جواب میده !

ho3ein.3ven
چهارشنبه 07 فروردین 1392, 12:49 عصر
سلام . برای حذف قسمت اعشار اعداد منفی از تابع int نمی تونی استفاده کنی .
برای حذف قسمت اعشار از تابع fix استفاده کن .

سپهر-111
چهارشنبه 07 فروردین 1392, 12:50 عصر
باتشکر از دوستان که وقت میزارند و جواب میدن
یک سوال دیگه ؟!
حالا اگه بخوام یک رقم اعشار بعدش نشون بدم چکار باید بکنم( البته بازم نمیخوام گرد بشه )

مثلا :
مثلا : 98.98278560250391
فقط 98.9 نشون داده بشه

SlowCode
چهارشنبه 07 فروردین 1392, 13:07 عصر
با این روش هر بلایی میخوای سر عدد بیار.
num = 98.9827856025039
Splited = Split(num, ".")
MsgBox Splited(0) & "." & Left(Splited(1), 1)

amin32
چهارشنبه 07 فروردین 1392, 13:17 عصر
یک تابع کوچیک نوشتم که میتونی تا هر عدد اعشار که خواستی رو بدست بیاری:


Private Function FixFloat(ByVal Number As Double, length As Integer) As String
FixFloat = Mid(Number, 1, InStr(1, Number, ".") + length)
End Function


و این هم یه مثال:


Print FixFloat(98.9827856025039, 1)

ho3ein.3ven
چهارشنبه 07 فروردین 1392, 13:31 عصر
سلام . با استفاده از خود توابع ویژوال بیسیک هم می تونید این کار رو انجام بدین :

مثال :
Round(2.223, 1)

سپهر-111
سه شنبه 13 فروردین 1392, 10:45 صبح
سلام دوستان گل
چطور میشه فهمید که یک عدد چند رقم اعشار داره ؟؟!
مثلا :
98.98278560250391
باتشکر

ho3ein.3ven
سه شنبه 13 فروردین 1392, 11:04 صبح
سلام .
تابع زیر رو بررسی کنید :

Private Function CountFloat(num As Double)
p = InStr(1, CStr(num), ".")
num = Mid(CStr(num), p + 1)
p = Len(CStr(num))
CountFloat = p
End Function

موفق باشید

سپهر-111
سه شنبه 13 فروردین 1392, 13:05 عصر
سلام .
تابع زیر رو بررسی کنید :

Private Function CountFloat(num As Double)
p = InStr(1, CStr(num), ".")
num = Mid(CStr(num), p + 1)
p = Len(CStr(num))
CountFloat = p
End Function

موفق باشید


سلام ممنون زحمت کشیدی
ولی اعداد اعشاری مثل این نشون نمیده
مثلا : 0.001
که سه رقم اعشار هستش ولی خروجی تابع یک رقم اعشار هستش !
ممنون میشم راهنمایی بفرمایید

ho3ein.3ven
سه شنبه 13 فروردین 1392, 13:21 عصر
سلام . تابع رو ویرایش کردم :

Private Function CountFloat(num As Double)
Dim num1 As String
num1 = CStr(num)
p = InStr(1, num1, ".")
num1 = Mid(num1, p + 1)
p = Len(num1)
CountFloat = p
End Function

موفق باشید.

سپهر-111
سه شنبه 13 فروردین 1392, 14:59 عصر
سلام . تابع رو ویرایش کردم :

Private Function CountFloat(num As Double)
Dim num1 As String
num1 = CStr(num)
p = InStr(1, num1, ".")
num1 = Mid(num1, p + 1)
p = Len(num1)
CountFloat = p
End Function

موفق باشید.

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

ho3ein.3ven
سه شنبه 13 فروردین 1392, 15:20 عصر
سلام . مجددا ویرایش شد :

Private Function CountFloat(num As Double)
Dim num1 As String
num1 = CStr(num)
p = InStr(1, num1, ".")
If p = 0 Then
CountFloat = 0
Exit Function
End If
num1 = Mid(num1, p + 1)
p = Len(num1)
CountFloat = p
End Function

موفق باشید.

SlowCode
سه شنبه 13 فروردین 1392, 18:34 عصر
بفرما:
Num = 0.001
Splited = Split(Num, ".")
MsgBox Len(Splited(1))
تابع split خیلی از کارها رو آسون میکنه.

سپهر-111
سه شنبه 13 فروردین 1392, 19:05 عصر
بفرما:
Num = 0.001
Splited = Split(Num, ".")
MsgBox Len(Splited(1))
تابع split خیلی از کارها رو آسون میکنه.

ممنون محسن جان
تابعی که دوستمون لطف کردند و گذاشتند جواب داد