PDA

View Full Version : تابعی برای گرد کردن عدد اعشاری



taha_ha@yahoo.com
چهارشنبه 30 بهمن 1387, 08:44 صبح
سلام
یه تابع که عدد اعشاری رو روند کنه می تونید معرفی کنید؟

mostafaaa
چهارشنبه 30 بهمن 1387, 09:38 صبح
سلام دوست من

Math.Round(1.123)

taha_ha@yahoo.com
چهارشنبه 30 بهمن 1387, 10:19 صبح
ایت تابع اعشار رو از بین می بره من میخوام که قسمت اعشاری گرد بشه

anooshiran
چهارشنبه 30 بهمن 1387, 11:02 صبح
سلام دوست عزيز

تابع زير را برايت نوشته ام




Dim RoudedValue As Single = MyRound(1.2345, 3)

Private Function MyRound(ByVal Value As Single, ByVal DecimalPlaces As Integer) As Single
Dim IntPart As Integer = Int(Value)
Dim DecimalPart As Single = CSng(Mid(CStr(Value), InStr(CStr(Value), ".") + 1))
DecimalPart = Math.Round(DecimalPart / 10 ^ (Len(CStr(DecimalPart)) - DecimalPlaces))
DecimalPart /= 10 ^ Len(CStr(DecimalPart))
Return IntPart + DecimalPart
End Function


DecimalPlaces را بايد براي نقطه راند كردن set كني . اگر 0 باشد كه درست ماند راند معمولي عمل ميكند ولي اگر 1 باشد يا هر عدد ديگر از همان مكان برايت راند مي كند

اميدوارم مشكلت را حل كند

salehbagheri
چهارشنبه 30 بهمن 1387, 11:27 صبح
با تشكر از Anooshiran!

ولي با همان تابع Math.Round هم ميشه اعداد رو رند كرد!



ایت تابع اعشار رو از بین می بره من میخوام که قسمت اعشاری گرد بشه


احتمالا شما از تابع به درستي استفاده نمي كنيد! براي من كه به خوبي جواب ميده!

mehdi.mousavi
چهارشنبه 30 بهمن 1387, 12:38 عصر
ایت تابع اعشار رو از بین می بره من میخوام که قسمت اعشاری گرد بشه

درسته، برای اینکه از Overload ای استفاده شده که هدفش گرد کردن اعداد به نزدیکترین عدد integer هستش! Overload دیگه این تابع، پارامتر دومی میگیره که نشون میده تا چند رقم اعشار میخواهید عدد رو گرد کنید. میتونید از اون استفاده کنید.

اگر به MSDN نگاه می کردید، اینها رو قطعا می دیدید:


' 3.4 = Math.Round( 3.45, 1)
'-3.4 = Math.Round(-3.45, 1)
'
' 3.4 = Math.Round( 3.45, 1, MidpointRounding.ToEven)
' 3.5 = Math.Round( 3.45, 1, MidpointRounding.AwayFromZero)
'
'-3.4 = Math.Round(-3.45, 1, MidpointRounding.ToEven)
'-3.5 = Math.Round(-3.45, 1, MidpointRounding.AwayFromZero)