webForumDet fria alternativet

Avrundning?

8 svar · 372 visningar · startad av asp

aspMedlem sedan aug. 2002733 inlägg
#1

Hej...

hur rundar man av ett tal?

Sedan så vill jag definera svaret till ett decimaltal, Double.

Såhär kan man göra för att definera talet som Double.

Dim resultat As Double
svar = txtHojd.Text * txtBredd.Text
txtSvar.Text = svar

Men man kan också gå en smidigare väg.

txtSvar.Text = txtHojd.Text * txtBredd.Text

Men då vet jag inte hur jag skall kunna definera svaret som Double. Kan man sätta allt inom parantes?

Marcus EMedlem sedan maj 20021 466 inlägg
#2

Använd Double.Parse(txtHojd.Text). Då görs konverteringen precis som du vill ha den. I C# finns inga automatiska konverteringar. Då slipper man det här problemet.

Och så var det avrundning. Använd Math.Round.

aspMedlem sedan aug. 2002733 inlägg
#3

Så detta är korrekt?

txtSvar.Text = Math.Round(Dobule.Parse(txtHojd.Text * txtBredd.Text))
Marcus EMedlem sedan maj 20021 466 inlägg
#4

Nja, Parse ska köras för varje konvertering. Det mest korrekta är:
txtSvar.Text = Math.Round(Double.Parse(txtHojd.Text) * Double.Parse(txtBredd.Text)).ToString()

Double, inte Dobule. :)

aspMedlem sedan aug. 2002733 inlägg
#5

Det var bara ett stavfel. :)

Vad gör ToString() ??

DinoMedlem sedan sep. 20011 914 inlägg
#6

Math.Round() retunerar ett värde av typen double och TextBoxens property Text är av typen string. Så om du försöker tilldela Text värdet av Round så kommer du få ett felmeddelande. Vad ToString() gör är att den retunerar en string av det objekt den används på. I ditt fall görs double om till string.

red/lite tydligare

Marcus EMedlem sedan maj 20021 466 inlägg
#7

ToString() eller ToString konverterar double till en sträng, precis som Dino skriver, men det fungerar även utan ToString. Då kommer VBs automatiska konvertering in och det var den du ville undvika från början.

Med ToString kan du faktiskt också avrunda talen för formateringsbehov. Så här kommer ett till förslag:
txtSvar.Text = (Double.Parse(txtHojd.Text) * Double.Parse(txtBredd.Text)).ToString("0")

Obs. att ToString avrundar till en sträng medan Math.Round avrundar till en double.

aspMedlem sedan aug. 2002733 inlägg
#8

Men när jag skriver såhär så behöver jag inte använda ToString()

txtSvar.Text = txtHojd.Text * txtBredd.Text
aspMedlem sedan aug. 2002733 inlägg
#9

Förstod nu...

138 ms totalt · 3 externa anrop · v20260731065814-full.7de19299
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)