C#中使用逗号(,)将decimal转换为字符串的toString()方法

12

c# decimal.toString() 转换问题

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


检查当前的区域设置 - 您需要选择使用“.”而不是“,”的区域设置 - 这与此问题相反:https://dev59.com/BnI_5IYBdhLWcg3wBuX3 - PaulF
输出取决于您的“CurrentCulture”,ToString(CultureInfo)。 - Mikko Viitala
5个回答

12

我相信这与你的操作系统设置的文化/地区有关。您可以通过在.ToString()方法中添加格式重载来修复/更改字符串解析方式。

例如:

decimalValue.ToString(CultureInfo.InvariantCulture);

@sivaprakash 随意将我的答案标记为正确 :) - Ralt
要标记答案为正确,需要15个声望。我只有7个。 - sivaprakash
1
嗨,@sivaprakash,只是友好地提醒您,您已经有足够的声望来将答案标记为正确。 - Tomek

5

您需要定义格式,它将取决于您的本地设置或使用类似以下内容的格式进行定义:

decimal.ToString(System.Globalization.CultureInfo.CreateSpecificCulture("en-us"));

干杯


4

如果要实现这一点,线程的当前文化必须使用逗号作为分隔符,而不是点。

您可以通过使用带有区域设置的 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

对于逗号(,)

尝试这样做:

decimalValue.ToString(System.Globalization.CultureInfo.CreateSpecificCulture("tr-tr"))

0

那么你当前的cultureNumberDecimalSeparator,而不是.

如果这不是你想要的,你可以使用CultureInfo.InvariantCulture来强制使用点号:

decimal num = 0.1m;
string numWithDotAsSeparator = num.ToString(CultureInfo.InvariantCulture);

或者 NumberFormatInfo.InvariantInfo

string numWithDotAsSeparator = num.ToString(NumberFormatInfo.InvariantInfo)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接