ToString
24 svar · 668 visningar · startad av celia
"D2" och "N2" är såvitt jag kan se värden som redan är strängar, och i så fall skulle ToString("x2") inte behövas. ToString() använder man när man vill konvertera en datatyp (exempelvis tal) till en sträng.
Dim x As integer
x = 100000
lbl1.Text = x 'fungerar ej
lbl1.Text = x.ToString() 'fungerar
Nä, det har väl med avrundning att göra? Om man konverterar ett flyttal tex:
flyttalet.ToString("D2")
så blir det två decimaler??
ToString-metoden använder man huvudsakligen för att konvertera en datatyp (t. ex. ett tal, ett objekt) till en sträng, för att exempelvis kunna skriva ut det i webbläsaren.
Man kan dock använda ToString för att avrunda ett tal till två decimaler, precis som du skriver. Jag som fattade lite trögt i början. ;)
Round(integer,0)
Jo - du kan göra så som Vimp skriver också. :)
MSDN är bra, men jag gillar .NET framework SDK bra mycket bättre. :)
..och här är länken: http://msdn.microsoft.com/netframework/technologyinfo/howtoget/
Man kan dock använda ToString för att avrunda ett tal till två decimaler, precis som du skriver
Tja!! Man använder det ju inte till att avrunda talet, utan man avrundar det värde som skrivs till strängen.
Om man efter ToString("D2") tittar på sitt tal igen, så har det inte avrundats till 2 decimaler.
Det är lite skillnad.
- M
Kan man inte anvrunda det "by reference" då?
Gladh skrev:
Om man efter ToString("D2") tittar på sitt tal igen, så har det inte avrundats till 2 decimaler.
Jo det är jag medveten om. Meningen var inte att ändra själva talet, utan att skapa en sträng med ett avrundat värde :)
>> Celia: du ändrar ju talet när du skapar en sträng med ett avrundat värde, såvida inte talet har exakt samma antal decimaler innan som efter avrundningen - vilket det ju inte har.
Vad vill du göra?
Avrunda talet och göra det till en sträng?
Inte avrunda talet (inte ändra talet) men göra det till en sträng?
Oki. Då använder du enbart denna koden:
Dim x As integer
x = 10
lbl1.Text = x.ToString()
Förutsätter att du har en label på sidan som heter lbl1. :)
Äsch jag missförstod dig m_söderlund :r Såhär menar jag:
dim f as float 'heter det float i VB? Iaf, ni fattar nog vad jag menar
dim s as string
f = 12345.6789
sedan
s = f.ToString("D2") 's = 12345.68, f = 123435.6789
då har ju inte f ändrats. Men om man gör
f = round(f,0) ' skriver man så?
s = f.ToString()
då ändras f innan man konverterar det till en sträng. Jag ville göra enligt första alternativet :)
----------
Tillbaka till ursprungsfrågan, om man gör såhär, vad blir s då?
dim f as float
dim s as string
f = 12345.6789
s = f.ToString("N2"); ' s = ??, f = 12345.6789
Jag hade inte tillgång till Visual Studio när inläggen i den här tråden postades men nu när jag testat lite så fick jag följande resultat:
f.ToString("N2") '12345.68
f.ToString("D2") 'error: Format specifier was invalid.
med Round '12345.68
Vad har man D2 till?
Tostring(Nx) = numberformat
ToString(Dx) = decimalformat
Kolla mer i Doc:n för mer information
Mv icaaq
D kanske står för Date oc N kanske för Number? I så fall är det nog förklarligt att D2 genererar ett felmeddelande. :)
/r icaaq var före.