2012-04-21 63 views
4

小数我试图格式化小数为0:在C#中 0.0试过这个代码格式没有逗号

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

res = Convert.ToDecimal(nv, new CultureInfo("en-GB")); 

但资源总是显示结果与一个逗号,与

new CultureInfo("en-GB") 
也尝试

但问题仍然存在 并提前致谢。

+0

'res'是一个'decimal',而不是一个字符串。所以它不能有格式。 – CodesInChaos 2012-04-21 10:51:02

+2

“0:0.0”甚至意味着什么“小数”? ':'的含义是什么? – Oded 2012-04-21 10:51:58

+1

@Oded我猜它代表'string.Format'中的第0个参数。 – CodesInChaos 2012-04-21 10:54:45

回答

1

resdecimal,而不是一个字符串。所以它不能有格式。小数是没有关联格式的纯数学数字。仅当您将decimal转换为string时,格式才会生效。

您可以使用res.ToString(CultureInfo.InvariantCulture)生产使用.作为小数点分隔字符串。

+0

我想要一个小数将其插入我的数据库中, – tarek 2012-04-21 11:10:22

+0

@user您的问题在哪里? – CodesInChaos 2012-04-21 11:18:24

+0

问题解决了,我以为我应该使用一个十进制变量来使用它一个sqlCommand指令,而且一个字符串可以使相同的想法,我用字符串nv = textBox7.Text.Trim()。Replace(',' ,'。'); – tarek 2012-04-21 11:22:51

10

正如其他评论和答案所示,您首先需要了解一些基本知识。我可能会说一些事情你已经知道了,但包涵:

  1. textBox7.Text包含string,而不是一个decimal
  2. 如果你想为计算一个decimal,你必须把它转换(我想你已经走到这一步)
  3. 由于res是一个小数,只要你想看看它的价值的东西将其转换为string。无论你是将它写入Console还是将鼠标悬停在调试器上。该转换将使用您当前的区域设置。 这个是为什么你总是看到一个逗号。
  4. 要显示给别人或写在你想要的格式的某个地方,你必须指定格式或CultureInfo。

a)Standard Format。例如:
Console.WriteLine(res.toString("F2"));
这将逗号之后格式化123456与2号:123456.00

b)中Custom Format。例如:
Console.WriteLine(res.toString("[##-##-##]"));
这将输出123456为类似[12-34-56]

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

顺便提及,我认为烯GB还输出到一个逗号:-)

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