Hej, För att kolla om det är ett giltigt tal kan du använda double.tryparse: http://msdn2.microsoft.com/en-us/library/system.double.tryparse.aspx ifall vi prata winforms så bör du väl använda dej av MaskedTextBox. >Ett sätt att kolla så det inte är för många decimaler skulle kunna vara att avrunda talet till max antal Tackar för svaren! decimal (System.Decimal) är en exakt datatyp så det är inga problem att jämföra för likhet.Validera data i textfält, antal decimaler
Har just börjat använda C# och har lite problem med tal.
Jag behöver validera två saker som användaren matar in:
1. Att användaren inte har skrivit ett tal(som får vara med decimaler). Hur kollar man det?
2. Att användaren inte har skrivit ett tal som har fler decimaler än tillåtet.
Det är lite olika på olika ställen i applikationen, ibland tillåts bara en decimal och ibland fler.
För det finns väl inga datatyper som begränsar antal decimaler? Hur gör man detta på ett bra sätt?
/JockeSv: Validera data i textfält, antal decimaler
Ett sätt att kolla så det inte är för många decimaler skulle kunna vara att avrunda talet till max antal decimaler och sedan kontrollera att det avrundade talet är samma som det ursprungliga. Kolla in Decimal.Round http://msdn2.microsoft.com/en-us/library/system.decimal.round(VS.71).aspx
/JohanSv: Validera data i textfält, antal decimaler
I annat fall kan det vara intressant med regex och/eller double.TryParseSv:Validera data i textfält, antal decimaler
>decimaler och sedan kontrollera att det avrundade talet är samma som det ursprungliga. Kolla in
>Decimal.Round
Du menar nog Math.Round men det är egentligen ingen bra idé eftersom många tal med decimaler inte blir exakta i en double.
Om decimaler är viktigt borde man använda datatypen Decimal istället för double.Sv: Validera data i textfält, antal decimaler
Decimaler är viktigt, så för att kolla att det är tal som matats in använder jag decimal.TryParse.
Men om jag även vill kontrollera antal decimaler, hur gör jag det?
/JockeSv:Validera data i textfält, antal decimaler
decimal d;
if (!decimal.TryParse(str, NumberStyles.Number, CultureInfo.CurrentUICulture, out d) ||
d != decimal.Round(d, maxantaldecimaler))
Console.WriteLine("Felaktigt tal " + str);