[C#] String to decimal

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hallo,

Voor een klein project lees ik een xml uit, uit deze xml haal ik een bepaalde beschrijving.
Echter loop ik tegen een probleem aan wanneer ik deze string wil converten/parsen naar een decimal.
Voorbeeld: string = "0.00877" wanneer ik deze parse komt er 877 uit hij haalt dus de nullen weg echter wil ik deze graag behouden wat is hier de juiste oplossing voor?

Groetjes,
Mark.

C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public decimal splitString(XmlNode node)
    {
        decimal result;

        //Get the decription
        string str = node["description"].InnerText;
        //Split the string at the = sign
        int beginmarker = str.IndexOf("=");
        //Make a substring 
        string substring = str.Substring(beginmarker + 2);
        //Make a array of the value and the text for example "999"  "euro"
        string[] value_and_text = substring.Split(' ');
        //Parse the string to a decimal
        result = ParseDecimal(value_and_text[0]);

        return result;
    
    }

[ Voor 1% gewijzigd door RobIII op 14-03-2011 21:12 ]


Acties:
  • 0 Henk 'm!

  • Wiebbe
  • Registratie: Februari 2001
  • Laatst online: 05-09 21:41

Wiebbe

<none />

Heeft dit niet te maken met de duizentallen en decimalen? Wellicht ziet hij de . als de duizendtallen ipv de decimalen, probeer even met je landinstellingen te spelen of zorg ervoor dat je parsed volgens een bepaalde landinstelling in de C#.

Oh noes.. No more TreinTijden :(


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Thanks voor je reactie Wiebbe ik zal het proberen :)

Acties:
  • 0 Henk 'm!

  • Styxxy
  • Registratie: Augustus 2009
  • Laatst online: 17-09 16:49
Eventueel spelen met de tweede parameter van Decimal.Parse (http://msdn.microsoft.com/en-us/library/91fwbcsb.aspx). Zoals je kan zien is dat een enum System.Globalization.NumberStyles. Daarin kan je eens kijken naar NumberStyles.AllowDecimalPoint (http://msdn.microsoft.com...ization.numberstyles.aspx)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
@ styxxy Thanks! Je hebt mij op de goede weg geholpen :) Heb eerst de punt(.) vervangen met een comma(,) vervolgens heb ik de 2de parameter gebruikt van de parse method. Nu behoudt hij wel de 0 waardes.

Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 18:32

gorgi_19

Kruimeltjes zijn weer op :9

Waarom gebruik je niet de andere overload (die met IFormatProvider) en gebruikt je CultureInfo.InvariantCulture. Anders krijg je over een tijdje het probleem met duizendtallen.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
@gorgi_19 Bedankt voor je opmerking
Mij oplossing momenteel is:

C#:
1
2
3
4
5
6
        //Replace the dot with a comma
        string test = value_and_text[0].Replace('.', ',');
        //Allow the comma
        System.Globalization.NumberStyles style = System.Globalization.NumberStyles.AllowDecimalPoint;
        //Parse the string to a decimal
        result = Decimal.Parse(test, style);

Heb deze op meerderen soorten "formats" getallen geprobeerd en werken op allen.
Kan je misschien nader uitleggen wat voor problemen zich volgens jouw kunnen voordoen?

[ Voor 1% gewijzigd door RobIII op 14-03-2011 21:11 ]


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Als je code post, gebruik dan a.u.b. code tags. Verder is, IMHO, heel die replace niet nodig zolang je de .Parse voorziet van de juiste IFormatProvider.

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij

Pagina: 1