c#decimal.toString()
转换问题
示例:我有一个十进制值(.1) 当我使用toString()将十进制转换为字符串时,它返回(0,10)。而不是。(DOT)它返回,(COMMA)。
答案 0 :(得分:6)
我认为这与您的操作系统设置的文化/区域有关。您可以通过在.ToString()
方法中添加格式重载来修复/更改字符串的解析方式。
例如
decimalValue.ToString(CultureInfo.InvariantCulture);
答案 1 :(得分:2)
为了实现这一点,线程的当前文化必须是使用逗号分隔符而不是点的文化。
您可以使用带有文化的ToString
的重载按ToString
进行更改:
var withDot = myVal.ToString(CultureInfo.InvariantCulture);
或者,您可以在执行对ToString()
的任何调用之前设置线程的文化,为整个主题更改此内容:
var ci = CultureInfo.InvariantCulture;
Thread.CurrentThread.CurrentCulture = ci;
Thread.CurrentThread.CurrentUICulture = ci;
var first = myVal.ToString();
var second = anotherVal.ToString();
答案 2 :(得分:2)
您必须定义格式,它将取决于您的本地设置或 使用类似的东西定义格式
decimal.ToString(System.Globalization.CultureInfo.CreateSpecificCulture("en-us"));
欢呼
答案 3 :(得分:0)
然后,您当前的culture NumberDecimalSeparator
为,
而不是.
。
如果不需要,可以使用CultureInfo.InvariantCulture
强制点:
decimal num = 0.1m;
string numWithDotAsSeparator = num.ToString(CultureInfo.InvariantCulture);
或NumberFormatInfo.InvariantInfo
string numWithDotAsSeparator = num.ToString(NumberFormatInfo.InvariantInfo)
答案 4 :(得分:0)
对于逗号(,)
尝试一下:
decimalValue.ToString(System.Globalization.CultureInfo.CreateSpecificCulture("tr-tr"))