c# decimal.toString()
转换问题
例子: 我有一个十进制值(.1),当我使用 toString() 方法将其转换为字符串时,它返回 (0,10)。它返回的是 ,(逗号) 而不是 .(点)。
c# decimal.toString()
转换问题
例子: 我有一个十进制值(.1),当我使用 toString() 方法将其转换为字符串时,它返回 (0,10)。它返回的是 ,(逗号) 而不是 .(点)。
我相信这与你的操作系统设置的文化/地区有关。您可以通过在.ToString()
方法中添加格式重载来修复/更改字符串解析方式。
例如:
decimalValue.ToString(CultureInfo.InvariantCulture);
您需要定义格式,它将取决于您的本地设置或使用类似以下内容的格式进行定义:
decimal.ToString(System.Globalization.CultureInfo.CreateSpecificCulture("en-us"));
干杯
如果要实现这一点,线程的当前文化必须使用逗号作为分隔符,而不是点。
您可以通过使用带有区域设置的 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();
对于逗号(,)
尝试这样做:
decimalValue.ToString(System.Globalization.CultureInfo.CreateSpecificCulture("tr-tr"))
那么你当前的culture的NumberDecimalSeparator
是,
而不是.
。
如果这不是你想要的,你可以使用CultureInfo.InvariantCulture
来强制使用点号:
decimal num = 0.1m;
string numWithDotAsSeparator = num.ToString(CultureInfo.InvariantCulture);
或者 NumberFormatInfo.InvariantInfo
string numWithDotAsSeparator = num.ToString(NumberFormatInfo.InvariantInfo)