C#, konvertering till decimaltal med både komma och punkt?

Permalänk
Medlem

C#, konvertering till decimaltal med både komma och punkt?

hej hej!

Som rubriken säger, konvertering till decimaltal (i C#) med både komma och punkt om det är möjligt?
Svenskar använder väll komma, många andra punkt. När vi ändå håller på, hur ändrar jag så programmet använder standard för svenska om jag nu skulle vilja det?

Använder för närvarande double.tryParse, vet att det finns några extra parametrar om man så vill, men vet inte hur jag ska lösa det.

mvh
Dalton Sleeper

bevakning
Permalänk
Medlem

Är det en String du konverterar ifrån?
Fungerar det inte med att ersätta alla kommatecken mot punkter och sedan köra Double.tryParse() ?

EDIT: såg nu att tryParse bara tar string som parameter.
Men annars kan du kanske använda IFormatProvider...
IFormatProvider Interface (System)

Visa signatur

citera!

Permalänk
Medlem

Om jag ska vara ärlig förstår jag inte riktigt vad du vill ha gjort.

Ska någon mata in ett decimaltal eller ska det läsas in? Ska detta sedan konverteras till rätt format?

Eller har du redan typ en double som ska skrivas ut på rätt sätt?

Permalänk
Medlem
Skrivet av Eik:

Om jag ska vara ärlig förstår jag inte riktigt vad du vill ha gjort.

Ska någon mata in ett decimaltal eller ska det läsas in? Ska detta sedan konverteras till rätt format?

Eller har du redan typ en double som ska skrivas ut på rätt sätt?

Jag har uppfattat det som att han vill att Double.TryParse("123,123123") och Double.TryParse("123.123123") ska fungera.

Visa signatur

citera!

Permalänk
Medlem

Om jag förstår dig rätt räcker det med en Replace där du ersätter punkt till komma innan du kör TryParse.

Permalänk
Hedersmedlem
Skrivet av No0Vad:

Om jag förstår dig rätt räcker det med en Replace där du ersätter punkt till komma innan du kör TryParse.

Eller möjligtvis ersätter komma med punkt och skickar med System.Globalization.CultureInfo.InvariantCulture till TryParse.

Permalänk
Medlem

tror du ska inkludera denna

using System.Globalization;

och sen skriva

string text = "0,25"; float value = float.Parse(text, CultureInfo.InvariantCulture);

om man inte kör de så tror jag det är . som skiljer, men är inte säker om jag förstått rätt alltså.

Visa signatur

Laptop - MacBook 2.0GHz, 4GB ram, Intel GMA 950
Stationär - i5 3570k @ 4ghz, 8gb ram, 120gb ssd + 2tb hdd, Windows 8 64bit, fractal design arc
Citera så jag hittar tillbaka :)

Permalänk
Medlem
Skrivet av Elgot:

Eller möjligtvis ersätter komma med punkt och skickar med System.Globalization.CultureInfo.InvariantCulture till TryParse.

Så InvariantCulture antar alltid punkt då antar jag oavsett land?
Då går det ju köra replace om det finns vanlig komma som sagt.

Ska testa detta, det kommer säkerligen att fungera på svenska iaf, har inte möjlighet att testa på nått annat. Återkommer.