[c#] Vreemd gedrag System.Convert.ToInt32

Pagina: 1
Acties:
  • 48 views sinds 30-01-2008

  • mahi
  • Registratie: Juni 2001
  • Laatst online: 03-10-2025

mahi

God bless GoT

Topicstarter
Ik ervaar een vreemd gedrag van System.Convert.ToInt32... Ik gebruik die functie veelvuldig om de waarden uit textboxes en dergelijke uit te lezen naar een Integer (na weliswaar te controleren of er geldige input is). Dat werkte altijd probleemloos.

Nu wil ik een tekstbestand inlezen met getallen en deze in een database pompen. Alle getallen staan in een geldig formaat, doch System.Convert.ToInt32 geeft een foutmelding.

Sterker, zelfs het simpelste voorbeeld gaat mis:
C#:
1
int iTest = System.Convert.ToInt32("0.5");
Dit geeft steevast volgende foutmelding:

An unhandled exception of type 'System.FormatException' occurred in mscorlib.dll

Additional information: Input string was not in a correct format.


De punt door een komma vervangen geeft geen verschil. Ik begrijp niet goed wat er mis gaat, want het uitlezen van de textboxes verder in het programma met diezelfde System.Convert.ToInt32 gaat wel goed.

Iemand die me kan zeggen wat hier mis gaat? Met Google en de GoT search kom ik talloze identieke foutmeldingen tegen, maar dat is dan steeds in gevallen waar de invoer duidelijk fout was (lege string, karakters,...). In mijn geval lijkt de invoerstring perfect valide, en toch...

A bus station is where a bus stops. A train station is where a train stops... On my desk I have a workstation.


  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 20:33

mulder

ik spuug op het trottoir

0,5 kun je niet converteren naar integer. double of float oid

oogjes open, snaveltjes dicht


  • Korben
  • Registratie: Januari 2001
  • Laatst online: 14-11-2025

Korben

() => {};

Misschien moet je maar eens goed in de MSDN opzoeken wat Int(eger) voor een type getal is. |:(

.oisyn: Échte programmeurs haten PHP met een passie. Ben jij soms geen echte programmeur?


  • pjvandesande
  • Registratie: Maart 2004
  • Laatst online: 01-05 19:09

pjvandesande

GC.Collect(head);

Een int mag geen decimalen bevatten.

Gebruik is:

C#:
1
double d = double.Parse("0.5");

[ Voor 48% gewijzigd door pjvandesande op 14-07-2005 12:48 ]


  • mahi
  • Registratie: Juni 2001
  • Laatst online: 03-10-2025

mahi

God bless GoT

Topicstarter
Oh my god... Ik voel me zo stom :P

En hier zit ik dan al een uur over te piekeren. En dan te weten dat ik in dit programma al een ettelijke duizenden regels code heb waarin frequent doubles gebruikt worden. Duidelijk niet uitgeslapen.

* schaam * schaam * schaam *

* mahi gaat even een extra dosis caffeïne drinken ;)

[ Voor 9% gewijzigd door mahi op 14-07-2005 13:20 ]

A bus station is where a bus stops. A train station is where a train stops... On my desk I have a workstation.


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

:D

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.

Pagina: 1

Dit topic is gesloten.