c# decimal.toString()
conversion problem
Example: I have a value in decimal(.1) when I convert decimal to string using toString() it returns (0,10). Instead of .(DOT) it returns ,(COMMA).
c# decimal.toString()
conversion problem
Example: I have a value in decimal(.1) when I convert decimal to string using toString() it returns (0,10). Instead of .(DOT) it returns ,(COMMA).
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)
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();
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