Saturday, 15 March 2014

c# - How to make InvariantCulture recognize a comma as a decimal separator? -



c# - How to make InvariantCulture recognize a comma as a decimal separator? -

how parse 1,2 single.parse? reason of asking because, when using cultureinfo.invariantculture don't 1.2 like, rather 12.

shouldn't "invariant culture" ignore culture?

consider next example:

using system; using system.globalization; public class programme { public static void main() { console.writeline(single.parse("1,2", cultureinfo.invariantculture)); console.writeline(single.parse("1.2", cultureinfo.invariantculture)); float value; console.writeline(single.tryparse("1,2", numberstyles.float, cultureinfo.invariantculture, out value)); console.writeline(single.tryparse("1,2", out value)); console.writeline(value); } }

the output of

12 1.2 false true 12

but expecting:

1.2 1.2 true true 1.2

based on my reading of invariantculture should result, not.

cultureinfo.invariantculture uses . decimal separator, , , thousands separator. independent of user settings, , independent of string you've got, hence name "invariantculture". specific details listed on numberformatinfo.invariantinfo msdn page.

to utilize , decimal separator, don't utilize cultureinfo.invariantculture. instead, utilize civilization utilize , decimal separator. there many suit needs.

alternatively, create custom civilization based on cultureinfo.invariantculture. can phone call clone method create re-create of can modify properties.

c# parsing floating-point

No comments:

Post a Comment