[C#] Decimal.Parse

Pagina: 1
Acties:

  • Psychops
  • Registratie: Februari 2001
  • Laatst online: 27-05 10:48
Haai,

Ik ben nu al een tijdje aan het proberen om een decimal te parsen van een textbox amount = decimal.Parse(tbStorten.Text.ToString(),nfi);

deze decimal moet vervolgens in een MySQL db gestopt worden, en dat lukt verder ook wel.

Maar... Als ik bv 100.00 invul dan parsed hij het als 10000. 100,00 parsed hij wel goed maar dat vreet mijn mysql niet (ook een decimal). Nu heb ik al eea geprobeert en op MSDN gezocht

http://msdn.microsoft.com...ecimalclassparsetopic.asp volgens die pagina zou dit moeten helpen

NumberFormatInfo nfi = new CultureInfo( "nl-NL", false).NumberFormat; (true ook geprobeert)

en vervolgens nfi mee te geven bij de parse opdracht. Maar wat ik ook doe hij wil van die , geen . maken.

Heeft iemand enig idee hoe ik dit wel kan doen.... want ik word 8)7

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 22:24

gorgi_19

Kruimeltjes zijn weer op :9

Replace een punt voor een , en ga dan parsen?

Enige nadeel is als je een formatting gebruikt.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Psychops
  • Registratie: Februari 2001
  • Laatst online: 27-05 10:48
Ja als ik dus 100.00 pars dan krijg ik 10000 dat lukt dus niet, of begrijp ik je verkeerd .
(met of zonder formatting)

[ Voor 14% gewijzigd door Psychops op 07-02-2004 14:40 ]


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 22:24

gorgi_19

Kruimeltjes zijn weer op :9

Psychops schreef op 07 februari 2004 @ 14:40:
Ja als ik dus 100.00 pars dan krijg ik 10000 dat lukt dus niet, of begrijp ik je verkeerd .
gorgi_19 schreef op 07 februari 2004 @ 14:37:
Replace een punt voor een , en ga dan parsen?
:?

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Psychops
  • Registratie: Februari 2001
  • Laatst online: 27-05 10:48
amount = decimal.Parse(tbStorten.Text.ToString())

Das mijn code Als ik nu in de textbox 100,00 invul en ik pars hem en laat amount weer zien dan is de waarde van amount 100,00. Geen probleem maar als ik dit naar MYSQL stuur dan vreet die dat niet (tenzij ik een varchar gebruik, maar ik maak gebruik van veldtype Decimal)

als ik 100.00 invul dan wordt de waarde 10000. Volgende heb ik ook al geprobeert

amount = decimal.Parse(tbStorten.Text.ToString(),NumberStyles.Currency)

Wat ik wil is dat het niet uitmaakt of ik 100.00 of 100,00 invul zolang er maar 100.00 uitkomt

[ Voor 10% gewijzigd door Psychops op 07-02-2004 14:57 ]


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 22:24

gorgi_19

Kruimeltjes zijn weer op :9

Erhm.. LEES nu eens een keer goed...

Er staat:
Stap 1. Replace een punt voor een komma.
Voorbeeld:
1.00 --> 1,00
1,00 --> 1,00

Stap 2. Ga dan parsen.

Concreet:
code:
1
2
3
strnaam = tekstboxwaarde
strnaam = vervang(strNaam,",",".")
decimalwaarde = Convert.ToDecimal(strnaam)

[ Voor 33% gewijzigd door gorgi_19 op 07-02-2004 15:00 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Psychops
  • Registratie: Februari 2001
  • Laatst online: 27-05 10:48
Ja Dat kan idd, maar het moet toch ook mogelijk zijn om het meteen zo in te stellen dat dit vanzelf gaat ?

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 22:24

gorgi_19

Kruimeltjes zijn weer op :9

Psychops schreef op 07 februari 2004 @ 15:02:
Ja Dat kan idd, maar het moet toch ook mogelijk zijn om het meteen zo in te stellen dat dit vanzelf gaat ?
Nee.

Aangezien een . soms een decimaalteken is, en soms een scheidingsteken voor duizendtallen en andersom. En anders moet je er een validator voor maken, dat . automagisch omgezet worden naar , (in winforms) of een regexvalidator (in webforms)

[ Voor 18% gewijzigd door gorgi_19 op 07-02-2004 15:04 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Psychops
  • Registratie: Februari 2001
  • Laatst online: 27-05 10:48
Ovrigens heeft dit niet veel zin, als ik nl 100,00 invoer en omzet naar 100.00 en daarna parse zit ik nog met het probleem dat de waarde NA het parsen niet 100.00 is maar 10000.
Doe ik het andersom dus 100.00 -> 100,00 dan gaat het goed (waarde 100,00). Maar MySQL neemt geen 100,00 aannemen

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 22:24

gorgi_19

Kruimeltjes zijn weer op :9

Ovrigens heeft dit niet veel zin, als ik nl 100,00 invoer en omzet naar 100.00 en daarna parse zit ik nog met het probleem dat de waarde NA het parsen niet 100.00 is maar 10000.
Dan moet je je localization / cultureinfo anders zetten
Doe ik het andersom dus 100.00 -> 100,00 dan gaat het goed (waarde 100,00). Maar MySQL neemt geen 100,00 aannemen
Parametrized queries

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Psychops
  • Registratie: Februari 2001
  • Laatst online: 27-05 10:48
Dan moet je je localization / cultureinfo anders zetten

En dat lukt me dus niet.

  • whoami
  • Registratie: December 2000
  • Laatst online: 00:40
MySQL neemt enkel decimal separators op natuurlijk. Als je 100.00,00 aan MySQL doorgeeft, aanziet hij dat ws als een string, omdat er een komma instaat.
Je hoeft dan ook de formattering van de getallen niet in de databank op te slaan, je moet ze in je presentation-layer formatteren.

Trouwens, dat string replacen vind ik niet zo netjes. Het gaat beter zo:
code:
1
2
3
4
NumberFormatInfo f = new NumberFormatInfo();
f.NumberDecimalSeparator = ",";
f.NumberGroupSeparator   = ".";
double d = Convert.ToDouble (textBox1.Text, f);

https://fgheysels.github.io/


  • whoami
  • Registratie: December 2000
  • Laatst online: 00:40
Psychops schreef op 07 februari 2004 @ 15:16:
Dan moet je je localization / cultureinfo anders zetten

En dat lukt me dus niet.
Om parametrized queries te gebruiken? :?
Nee hoor. Hoe stop je die waarden in de databank? Misschien kan je dit eens doorlezen.

https://fgheysels.github.io/


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 22:24

gorgi_19

Kruimeltjes zijn weer op :9

whoami schreef op 07 februari 2004 @ 15:18:
Trouwens, dat string replacen vind ik niet zo netjes. Het gaat beter zo:
Hoe wil je anders voor elkaar krijgen dat zowel , als . als scheidingsteken wordt gezien? :)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • whoami
  • Registratie: December 2000
  • Laatst online: 00:40
gorgi_19 schreef op 07 februari 2004 @ 15:47:
[...]

Hoe wil je anders voor elkaar krijgen dat zowel , als . als scheidingsteken wordt gezien? :)
Ow, is dat de bedoeling? Dan heb ik ergens over gelezen.

https://fgheysels.github.io/


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 22:24

gorgi_19

Kruimeltjes zijn weer op :9

whoami schreef op 07 februari 2004 @ 16:09:
[...]


Ow, is dat de bedoeling? Dan heb ik ergens over gelezen.
Althans, dat heb ik er uit begrepen.. :P En anders moet parametrized queries icm de goede cultureinfo soelaas bieden.. :)

Digitaal onderwijsmateriaal, leermateriaal voor hbo

Pagina: 1