格式化小数,不带逗号

tar*_*rek 5 .net c# decimal

我尝试在c#中将小数格式设置为0:0.0,尝试此代码

string nv = textBox7.Text.Trim().Replace(',', '.');

res =  Convert.ToDecimal(nv, new CultureInfo("en-GB"));
Run Code Online (Sandbox Code Playgroud)

但res总是用逗号显示结果,也试过用

new CultureInfo("en-GB")
Run Code Online (Sandbox Code Playgroud)

但问题仍然存在并提前感谢你.

Vin*_*rgh 11

正如其他评论和答案所示,您首先需要了解一些基础知识.我可能会说你已经知道的一些事情,但请耐心等待:

  1. textBox7.Text包含一个string,而不是一个decimal.
  2. 如果你想decimal进行计算,你必须转换它(我想你已经有了这个)
  3. 由于res是小数,因此每当您想要查看其值时,SOMETHING会将其转换为a string.Console当你将鼠标悬停在调试器上时,是将它写入调试器还是调试器.该转换将使用您当前的区域设置.就是你总是看到一个逗号的原因.
  4. 要将其显示给其他人或使用您想要的格式将其写入某处,您必须指定格式或CultureInfo.

a)标准格式.示例:
Console.WriteLine(res.toString("F2"));
这将在逗号后面的123456格式为123456:123456.00

b)自定义格式.示例:
Console.WriteLine(res.toString("[##-##-##]"));
这将输出123456,如[12-34-56]

c)CultureInfo.示例:
Console.WriteLine(res.ToString(CultureInfo.CreateSpecificCulture("nl-BE")));
这将在比利时输出1234.56:用逗号1234,56

顺便提一下,我认为en-GB也输出到逗号:-)

d)结合.发疯!两个都做!示例:
Console.WriteLine(res.ToString("F2", CultureInfo.CreateSpecificCulture("nl-BE")));
格式123456到123456,00!


Cod*_*aos 3

res是一个decimal,而不是一个字符串。所以它不能有格式。小数是没有关联格式的纯数学数字。decimal该格式仅在将 a 转换为 a时才存在string

您可以用来res.ToString(CultureInfo.InvariantCulture)生成用作小数点分隔符的字符串.