Hur skriver jag ett String.Format för att outputen skall bli Går inte eftersom Windows och därmed .NET inte tillämpar siffergruppering på decimaler. Eller, jo ok, jag överbevisar mig själv. Tack för att du försöker men jag får error: Det är för att du har Windows inställt på svenska regionsinställningar. Tack nu blev dt bra. Jag gjorde så här: 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. Jag utgick från "kravspecen" i första inlägget :-)Om String.Format
27.19 685 039 370
Om det blir en decimal till
27.919 685 039 370Sv: Om String.Format
Det är ju dock lätt att göra det själv:
string i = "27.19685039370";
for (int pos = i.Length; pos > i.IndexOf('.'); pos = pos - 3)
i = i.Insert(pos, " ");
Sv:Om String.Format
Du kan göra så här :-)
string i = "27.19685039370";
i = string.Format("{0:N0}.{1:N0}", double.Parse(i.Split('.')[0]), double.Parse(i.Split('.')[1]));
Sv: Om String.Format
<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.Sv:Om String.Format
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.Sv: Om String.Format
<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.Sv:Om String.Format
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?Sv: Om String.Format
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.