webForumDet fria alternativet

ToString

.NET

24 svar · 668 visningar · startad av celia

Medlem sedan dec. 20012 532 inlägg
Frågan#1

Vad betyder N och D?

ToString("D2")
ToString("N2")

Medlem sedan sep. 20026 425 inlägg
#2

"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
Medlem sedan dec. 20012 532 inlägg
#3

Nä, det har väl med avrundning att göra? Om man konverterar ett flyttal tex:

flyttalet.ToString("D2")

så blir det två decimaler??

Medlem sedan sep. 20026 425 inlägg
#4

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

Medlem sedan dec. 20012 532 inlägg
#5

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"

Medlem sedan juli 20022 537 inlägg
#6

Round(integer,0)

Medlem sedan sep. 20026 425 inlägg
#7

Jo - du kan göra så som Vimp skriver också. :)
MSDN är bra, men jag gillar .NET framework SDK bra mycket bättre. :)

Medlem sedan sep. 20026 425 inlägg
Medlem sedan maj 20012 812 inlägg
#9

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

Medlem sedan mars 20021 889 inlägg
#10

Kan man inte anvrunda det "by reference" då?

Medlem sedan dec. 20012 532 inlägg
#11

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 :)

Medlem sedan sep. 20026 425 inlägg
#12

>> 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?

Medlem sedan dec. 20012 532 inlägg
#13

m_soderlund skrev:

Inte avrunda talet (inte ändra talet) men göra det till en sträng?

Japp.

Medlem sedan sep. 20026 425 inlägg
#14

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. :)

Medlem sedan dec. 20012 532 inlägg
#15

Ä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

Medlem sedan sep. 20026 425 inlägg
#16

Aha!

Jag tror att s i sista koden där blir 12345,68 - men jag är långt ifrån säker. ;)

Medlem sedan maj 20012 812 inlägg
#17

Tillbaka till ursprungsfrågan, om man gör såhär, vad blir s då?

Varför inte prova och se :)

- M

Medlem sedan dec. 20012 532 inlägg
#18

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?

Medlem sedan okt. 20005 273 inlägg
#19

Tostring(Nx) = numberformat
ToString(Dx) = decimalformat

Kolla mer i Doc:n för mer information

Mv icaaq

Medlem sedan sep. 20026 425 inlägg
#20

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.

305 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
174 ms — hämta tråd, inlägg och bilagor (db)
127 ms — ändringar (db)