PDA

View Full Version : نمایش اعداد اعشاری حداکثر تا دورقم



VB.NET2005
چهارشنبه 03 بهمن 1386, 19:14 عصر
دوستان عزیز من یک برنامه دارم که معدل میگیره گاهی اوقات بعضی از معدل ها به این شکله من میخام حداکثر تا دو رقمشو تو تکست باکس نشون بده . معدل در یک متغیر ذخیره شده .

معدل = 19.653435687

نمایش در تکست باکس به صورت = 19.65

: با تشکر از همه اساتید محترم :

__siavash__
چهارشنبه 03 بهمن 1386, 20:47 عصر
یه راهش اینه


Format(19.653435687, "#.##")

VB.NET2005
چهارشنبه 03 بهمن 1386, 21:33 عصر
با تشکر از شما : اقای سیاوش ، فقط کده دیگه ای نیست که عدد رو گرد نکنه فقط با دو رقم اعشار نشون بده خروجی این کد این طوریه :
19.33<------ 19.3266

__siavash__
چهارشنبه 03 بهمن 1386, 23:14 عصر
با تشکر از شما : اقای سیاوش ، فقط کده دیگه ای نیست که عدد رو گرد نکنه فقط با دو رقم اعشار نشون بده خروجی این کد این طوریه :
19.33<------ 19.3266
یادم نمیاد vb.Net خودش تابعی داشته باشه که این کارو بکنه :متفکر:
اما شما میتونی خودت راحت تابعشو بنویسی
به این صورت که این عدد 19.3266 رو به صورت String بگیره بعد "." رو توش سرچ کن بعد دو رقم اول بعد "." رو برداره ...

این یه کد نمونه

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
MsgBox(Fix(19.5365))
End Sub

Private Function Fix(ByVal Number As Double)
Dim i AsByte
Dim strNum As String
Dim FixNumber As Double
strNum = Number.ToString
i = InStr(strNum, ".")
strNum = Mid(strNum, 1, i + 2)
FixNumber = CDbl(strNum)
Return FixNumber
End Function

saeghe3000
پنج شنبه 04 بهمن 1386, 00:02 صبح
من هم یه خورده گشتم ولی چیزی پیدا نکردم و خودم یه چیزی برات ساختم
ایشالله به کارت بیاد:لبخند:


Dim dblNum As Double
dblNum = 0.325
If (Format(dblNum, "#.##") > dblNum) Then
TextBox1.Text = Format(dblNum - 0.01, "#.##")
Else
TextBox1.Text = Format(dblNum, "#.##")
End If

این بر اساس همون مقایسه بین رشته هاست که کد اسکی کاراکتر ها با هم مقایسه میشن

من با هر چی عدد بلد بودم تست کردم جواب داد .:لبخند:

maryam_vb
پنج شنبه 04 بهمن 1386, 13:51 عصر
راه ساده تر:


TextBox2.Text = Mid(Str(avg), 1, 6)

saeghe3000
پنج شنبه 04 بهمن 1386, 19:43 عصر
راه ساده تر:


TextBox2.Text = Mid(Str(avg), 1, 6)


کدت قشنگ بود . از طرز تفکرت خوشم اومد ولی یه مشکل داره
برای اعداد زیر 10 کار نمیکنه یعنی 3 رقم اعشار میده

باید یه سری if به کار ببریم

maryam_vb
جمعه 05 بهمن 1386, 11:16 صبح
من به مشروطی ها توجه نکرده بودم!

Dim i AsByte = 5
avg = Val(Tavg.Text)
If avg < 10 Then
i = 4
EndIf
TextBox2.Text = Mid(avg, 1, i)

Dariuosh
جمعه 05 بهمن 1386, 12:07 عصر
سلام
از قرار مشکل دوستمون نقداً حل شد
ولی آخه این کد فقط برا اعداد یه رقمی و دو رقمی جواب میده
فک کنم اینطوری هم بشه



Dim Str AsString = Me.TextBox1.Text
Dim Sep AsString = "."

Dim index As Int16 = Str.LastIndexOf(Sep)
If index > 0 Then

SelectCase Str.Length
Case index + 1
Me.TextBox2.Text = Str.Substring(0, index)
Case index + 2
Me.TextBox2.Text = Str.Substring(0, index + 2)
Case index + 3
Me.TextBox2.Text = Str.Substring(0, index + 3)
EndSelect

Else

Me.TextBox2.Text = Str
EndIf

VB.NET2005
جمعه 05 بهمن 1386, 21:54 عصر
با تشکر فراوان از اقای داریوش

Ner'zhul Arthas
چهارشنبه 10 بهمن 1386, 03:21 صبح
دستور Fix واسه همین کاره!

Dariuosh
چهارشنبه 10 بهمن 1386, 07:30 صبح
دستور Fix واسه همین کاره!

تا اونجایی که میدونم Fix هم ردیف Int

http://msdn2.microsoft.com/en-us/library/xh29swte(VS.80).aspx

Ner'zhul Arthas
پنج شنبه 11 بهمن 1386, 17:48 عصر
منظورتون چیه؟
اول عدد رو ضرب در 100 میکنید بعد فیکسش رو میگیرید تقسیم بر 100 میکنید.



Fix(124.939 * 100) / 100 ==>> 124.93


در مورد اعداد منفی هم int و fix با هم فرق میکنن.



Fix(-124.135) =>> -124
Int(-124.135) =>> -125