c# 十进制到字符串() 转换与逗号(,)

本文关键字:转换 字符串 十进制 | 更新日期: 2023-09-27 17:56:38

c# decimal.toString()转换问题

示例:我有一个十进制 (.1) 的值当我使用 toString() 将十进制转换为字符串时,它返回 (0,10)。 而不是。(DOT) 它返回 ,(逗号)。

c# 十进制到字符串() 转换与逗号(,)

我相信

这与操作系统设置的区域性/区域有关。可以通过在 .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)