Mitt program kastar exeption när jag använder parseDouble() för att konvertera ett tal från ett TextFält i programmet. Det beror troligtvis på vilket decimaltecken du har ställt in under Nationella inställningar i Kontrollpanelen. Tack för hjälpen, ska genast kolla om det funkar. En annan variant som inte kräver att du ändrar på användarens inställningar är att du gör Använd istället InvariantCulture Tack för all bra förslag:)) Det fungerar ifall den kultur som är inställd använder punkt som decimalseparator. Specificera CultureInfo.InvariantCulture, så vet du att det är punkt som används.Problem med parseDouble() men bara på vissa Windows XP datorer:((
Det är bara vissa Windows XP maskiner problemet uppstår i:( Givetvis matar jag in exakt samma värden i datorerna.
Kan det bero på att maskinen som problemet uppstår i har en Engelsk utgåva av Windows XP eller är det några speciella inställningar man måste göra för flyttal. Jag menar ibland verkar "komma" (,) ska användas som avskiljare och ibland "punkt" (.).
Hoppas nån som vet:)
MVH JensSv: Problem med parseDouble() men bara på vissa Windows XP datorer:((
/JohanSv:Problem med parseDouble() men bara på vissa Windows XP datorer:((
Men det gör det nog:)
/JensSv: Problem med parseDouble() men bara på vissa Windows XP datorer:((
System.Globalization.CultureInfo uslocale = new System.Globalization.CultureInfo("en-US");
double value = Double.ParseDouble(mystring, uslocale);
(observera : jag har inte provkompilerat ovanstående kod)
om du bestämmer dig för att det alltid skall vara punkt (.) som kommatecken. Om du alltid vill ha komma (,) så ersätter du "en-US" med "sv-SE". Detta är framförallt användbart om man skall läsa ett textbaserat filformat (t.ex. XML) där man skall parsa ut double från strängar och vill att det skall fungera med olika Regional Settings.
/Andreas
Sv:Problem med parseDouble() men bara på vissa Windows XP datorer:((
CultureInfo.InvariantCulture;
(för Xml rekommenderas XmlConvert)
Sv: Problem med parseDouble() men bara på vissa Windows XP datorer:((
Jag löste det genom en nästlande try-catch sats så här:
String t_item = selecteditem.ToString();
try{
tjocklek = Convert.ToDouble(t_item);
}
catch (Exception es)
{
try{
t_item=t_item.Replace(",",".");
tjocklek = Convert.ToDouble(t_item);
}
catch (Exception es2){
MessageBox.Show("inmatnings fel tjocklek\n" + es2 + es);
}
}
Jag vet inte om det är en bra lösning men det verkar funka..
/JensSv:Problem med parseDouble() men bara på vissa Windows XP datorer:((
Ersätt kommatecknet innan du försöker konvertera första gånen, så behöver du inte försöka konvertera två gånger. Använd double.TryParse istället, så behöver du ingen try...catch.