问题
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).
回答1:
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);
回答2:
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();
回答3:
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
回答4:
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)
回答5:
For comma (,)
try this:
decimalValue.ToString(System.Globalization.CultureInfo.CreateSpecificCulture("tr-tr"))
来源:https://stackoverflow.com/questions/30889114/c-sharp-decimal-tostring-conversion-with-comma