开发者

How to make doubles always contain a . character?

I noticed my doubles contain different precision characters depending on regional settings.

For example:

3,47 or 3.45

How can I enforce the double should a开发者_StackOverflow社区lways contain a . precision character?

Problem is once I serialize the class containing this double to XML, it gets shipped to other systems expecting a standard result.

So after reading your responses (and thanks), do you guys recommend changing the property to a string, (making the replacements in a string), so that it serializes with the string value (not the double)?


You need to put the double to string using the Invariant Culture.

double d = 3.47;
Console.WriteLine(d.ToString(CultureInfo.InvariantCulture));


You will need to format with the InvariantCulture.

Note that the "." and "," formatting characters are interpreted according to the culture settings.


This little tutorial will be the answer you need, I expect: http://www.java2s.com/Tutorial/CSharp/0440__I18N-Internationalization/Parsingnumberswithcultureinvariantparsing.htm

double.Parse(numberString, CultureInfo.InvariantCulture);


The double itself doesn't include a "." or a ",", only the print out of the representation does. You can read up on custom formats here.

[Update according to OP]
I don't know exactly what your design looks like, but it would probably be smart to create a string property on your DTO, which would output the formatted string of your double, and then mark your double property as not serializable.


When you need to do this for all numbers in your current applicaton, you can use the following to set it application-wide (new threads will inherit this setting):

// use this statement to force the default:
Application.CurrentCulture = CultureInfo.InvariantCulture;
string s = myNumber.ToString();

// for one number you have to remember to use:
string s = myNumber.ToString(CultureInfo.InvariantCulture);

Note: by default, your application, whether ASP.NET or WinForms, will use the culture settings of the system it is running on (in ASP.NET, you can set the culture globally in the web.config).

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜