Avatar billede petermjensen Nybegynder
01. juli 2004 - 15:19 Der er 10 kommentarer og
1 løsning

Decimal string konvertering

Hej,
Jeg har et problem med noget decimal parsing.

Jeg har nogle strings med nogle beløber:
"595.95"
"192,5"
"500"
Mit problem er den parser beløbene forkert hvis enten der ikke er komma tal, eller hvis der kun  er et tal efter Punktummet.
Jeg troede bare at man kunne gøre sådan her:
decimal Money = Convert.ToDecimal("295,5");
Men så kommer der slet ikke noget komma.

Hvis jeg så gør sådan kommer ovenstående problem:
decimal Money = Convert.ToDecimal("295,5")/100;

Hvordan kan jeg bedst konverter et string decimal til en almindelig decimal helst uden at skulle parse for meget?
Avatar billede arne_v Ekspert
01. juli 2004 - 15:24 #1
Convert.ToDecimal("295,5".Replace(',','.'))
Avatar billede the_party_dog Nybegynder
01. juli 2004 - 15:28 #2
husk at punktum og komma ikke har samme betydning på engelsk som det har på dansk.

Komma i usa betyder tusinder: 2,000 er 2000 ved os.
Punktum i usa betyder: 2.34 er 2,34 ved os.
Avatar billede petermjensen Nybegynder
01. juli 2004 - 15:29 #3
Æv undskyld det er mig der dummer mig lidt.. Det er ikke et komme men et punktum, der er i mine strenge:
295.5
Avatar billede petermjensen Nybegynder
01. juli 2004 - 15:33 #4
Ups må vidst lige foklare mig :o)
Jeg har stadig det samme problem, men jeg kom til at sige min strenge indeholdte kommaer isted for punktummer. Det er forkert.. jeg bruger punktummer men har problemet.
Avatar billede arne_v Ekspert
01. juli 2004 - 15:51 #5
Er din PC sat op til dansk ?

Prøv lige:

Convert.ToDecimal("295.5")

og:

Convert.ToDecimal("295.5".Replace('.',','))

altså konvertering fra punktum til komma.
Avatar billede petermjensen Nybegynder
01. juli 2004 - 16:03 #6
Det virker med replace kommaerne! Tusinde endnu engang tak arne v! :o)
Er det pga min computer står til dansk?
Avatar billede petermjensen Nybegynder
01. juli 2004 - 16:04 #7
Hov jeg kom til at svare selv.. jeg ville accepter..
Avatar billede arne_v Ekspert
01. juli 2004 - 16:20 #8
Ja.

.NET er ret god til at tage hensyn til lokalitet (også når man helst vil være fri
for det)
Avatar billede petermjensen Nybegynder
01. juli 2004 - 16:38 #9
he he.. :o) Ok.. Tak for hjælpen!
Avatar billede arne_v Ekspert
01. juli 2004 - 20:01 #10
Hvis du vil bestemme . eller , så kan du bruge:

        decimal d1 = Decimal.Parse("295.5", new CultureInfo("en-US", false));
        decimal d2 = Decimal.Parse("295,5", new CultureInfo("da-DK", false));
Avatar billede jimgordon Nybegynder
06. oktober 2006 - 08:35 #11
for the record:

// aktuelle opsatte separator

string decimalSeparator = Thread.CurrentThread.CurrentCulture.NumberFormat.NumberDecimalSeparator;
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester