Om String.Format
Hur skriver jag ett String.Format för att outputen skall bli
27.19 685 039 370
Om det blir en decimal till
27.919 685 039 370
Svara
Sv: Om String.Format
Går inte eftersom Windows och därmed .NET inte tillämpar siffergruppering på decimaler.
Det är ju dock lätt att göra det själv:
1 2 3 | string i = "27.19685039370" ; for ( int pos = i.Length; pos > i.IndexOf( '.' ); pos = pos - 3) i = i.Insert(pos, " " ); |
Svara
Sv:Om String.Format
Eller, jo ok, jag överbevisar mig själv.
Du kan göra så här :-)
1 2 | string i = "27.19685039370" ; i = string .Format( "{0:N0}.{1:N0}" , double .Parse(i.Split( '.' )[0]), double .Parse(i.Split( '.' )[1])); |
Svara
Sv: Om String.Format
Tack för att du försöker men jag får error:
<code>Indexet låg utanför gränserna för matrisen.</code>
Ung så här ser mina koder ut:
<code>
double resultat = ((delarTum / tum) * delTum) + (helaTum * tum);
string i = resultat.ToString();
i = string.Format("{0:N0}.{1:N0}", double.Parse(i.Split('.')[0]), double.Parse(i.Split('.')[1]));
totalt = i;
lResult.Text = totalt + " mm";
</code>
Jag har alltså inte lagt detta inom ett try/cath för jag ville ha det fungerande först.
Vad jag försöker att göra är att omvandla tum till mm.
Svara
Sv:Om String.Format
Det är för att du har Windows inställt på svenska regionsinställningar.
Det finns då ingen . i talet utan det är ett ,
Min kod är testad och jag utgick från att du hade en punkt i inputen eftersom du skrev det.
Byt ut till komma i Split-funktionerna. Tänk dock på att om nån kör programmet med amerikanska inställningar blir det fel igen. Det rätta sättet är att läsa ut vilken decimal-separator användaren har.
Svara
Sv: Om String.Format
Tack nu blev dt bra. Jag gjorde så här:
<code>
string i = resultat.ToString();
try
{
i = string.Format("{0:N0}.{1:N0}", double.Parse(i.Split(',')[0]), double.Parse(i.Split(',')[1]));
}
catch
{
i = string.Format("{0:N0}.{1:N0}", double.Parse(i.Split('.')[0]), double.Parse(i.Split('.')[1]));
}
totalt = i;
</code>
..så bör det täcka alla eventualiteter.
Svara
Sv:Om String.Format
Får man fråga varför det är första gruppen som ändras om man ändrar antalet decimaler? Verkar mer logiskt att det är den sista.
Då skulle man kan göra så här "{0:0.### ### ### ### ###}"
Hur vet man hur många decimaler som skall visas? I ditt exempel är sista decimalen 0. Varför kommer den med?
Svara
Sv: Om String.Format
Jag utgick från "kravspecen" i första inlägget :-)
Enligt Windows ska det inte vara nån gruppering på decimaler och enligt Wikipedia ska det vara de tre första etc, precis som du sa.
Svara