How to prevent decimal.TryParse convert "," to "."?

This is my code:

string myValue = "0,203";

decimal.TryParse(myValue, NumberStyles.Any, CultureInfo.CurrentCulture, out myValueAsDecimal;

...

myValueAsDecimal is 0.203 now

Is it possible that myValueAsDecimal has 0,203 after TryParse or the internal representation of decimal is always 0.203 and I need to format GUI output if I need 0,203?

Jon Skeet
people
quotationmark

Is it possible that myValueAsDecimal has 0,203 after TryParse

No. It's just a number - it has no concept of a text format. To think about it another way with a simpler type, consider these two lines of code:

int x = 0x100;
int y = 256;

Are those two values the same? Yes, they represent the same number. If you convert the values of x and y to strings, by default they will both end up as "256" - but they could both end up as "100" if you request a hex representation.

It's important to distinguish between the real value of a variable and a textual representation. Very few types (none that I can think of immediately) carry around information about a textual representation with them - so for example, a DateTime can be parsed from a variety of formats, but has no "memory" of an original text format. It's just a date and time, which could then be formatted according to any format.

If you need to maintain the idea of "a decimal number and the culture in which it was originally represented" then you should create your own class or struct for that pairing. It's not present in decimal itself.

people

See more on this question at Stackoverflow