celia Medlem sedan dec. 2001 2 532 inlägg Frågan 7 dec. 2003 14:11 #1 Vad betyder N och D?
ToString("D2")
ToString("N2")
"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
celia Medlem sedan dec. 2001 2 532 inlägg 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. ;)
Du kan titta lite mer här och här . :D
celia Medlem sedan dec. 2001 2 532 inlägg Tack för det :) MSDN är jag inte vän med, tycker det är krångligt att hitta saker där... Iaf så hittade jag detta
D= Decimal
N=Number
r/ hur gör man om man inte vill ha några decimaler alls, med korrekt avrunding? Tex talet 1.567 ska bli strängen "2"
Jo - du kan göra så som Vimp skriver också. :)
MSDN är bra, men jag gillar .NET framework SDK bra mycket bättre. :)
G Gladh Medlem sedan maj 2001 2 812 inlägg
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
T trexter Medlem sedan mars 2002 1 889 inlägg Kan man inte anvrunda det "by reference" då?
celia Medlem sedan dec. 2001 2 532 inlägg
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. :)
celia Medlem sedan dec. 2001 2 532 inlägg Ä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
Aha!
Jag tror att s i sista koden där blir 12345,68 - men jag är långt ifrån säker. ;)
G Gladh Medlem sedan maj 2001 2 812 inlägg
Tillbaka till ursprungsfrågan, om man gör såhär, vad blir s då?
Varför inte prova och se :)
- M
celia Medlem sedan dec. 2001 2 532 inlägg 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?
I icaaq Medlem sedan okt. 2000 5 273 inlägg 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.