c# decimal toString() conversion with comma(,)

删除回忆录丶 提交于 2019-12-04 10:48:10

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!