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.
8 svar · 374 visningar · startad av asp
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?
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.
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. :)
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
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.
Men när jag skriver såhär så behöver jag inte använda ToString()
txtSvar.Text = txtHojd.Text * txtBredd.Text
Förstod nu...