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