c# decimal.toString()
conversion problem
Example: I have a value in decimal(.1) when I convert decimal to string using toString() it return
I believe this is to do with the culture/region which your operating system is set to. You can fix/change the way the string is parsed by adding in a format overload in the .ToString()
method.
For example
decimalValue.ToString(CultureInfo.InvariantCulture);
For this to be happening, the thread's current culture must be one that uses a separator of comma instead of dot.
You can change this on a per ToString
basis using the overload for ToString
that takes a culture:
var withDot = myVal.ToString(CultureInfo.InvariantCulture);
Alternatively, you can change this for the whole thread by setting the thread's culture before performing any calls to ToString()
:
var ci = CultureInfo.InvariantCulture;
Thread.CurrentThread.CurrentCulture = ci;
Thread.CurrentThread.CurrentUICulture = ci;
var first = myVal.ToString();
var second = anotherVal.ToString();
For comma (,)
try this:
decimalValue.ToString(System.Globalization.CultureInfo.CreateSpecificCulture("tr-tr"))
you have to define the format, it will depend in your local setting or define the format, using something like this
decimal.ToString(System.Globalization.CultureInfo.CreateSpecificCulture("en-us"));
cheers
Then your current culture's NumberDecimalSeparator is ,
instead of .
.
If that's not desired you can force the dot with CultureInfo.InvariantCulture
:
decimal num = 0.1m;
string numWithDotAsSeparator = num.ToString(CultureInfo.InvariantCulture);
or NumberFormatInfo.InvariantInfo
string numWithDotAsSeparator = num.ToString(NumberFormatInfo.InvariantInfo)