webForumDet fria alternativet

ToString

24 svar · 668 visningar · startad av celia

celiaMedlem sedan dec. 20012 532 inlägg
#1

Vad betyder N och D?

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

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

m_soderlundMedlem 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

celiaMedlem 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"

VimpMedlem sedan juli 20022 537 inlägg
#6

Round(integer,0)

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

m_soderlundMedlem sedan sep. 20026 425 inlägg
GladhMedlem 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

trexterMedlem sedan mars 20021 889 inlägg
#10

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

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

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

celiaMedlem 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.

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

celiaMedlem 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

m_soderlundMedlem 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. ;)

GladhMedlem 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

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

icaaqMedlem sedan okt. 20005 273 inlägg
#19

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

Kolla mer i Doc:n för mer information

Mv icaaq

m_soderlundMedlem 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.

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