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