格式化小数,不带逗号

时间:2012-04-21 10:48:13

标签: c# .net decimal

我尝试在c#中将小数格式设为0:0.0 试过这段代码

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

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

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

new CultureInfo("en-GB")

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

3 个答案:

答案 0 :(得分:11)

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

  1. 您的textBox7.Text包含string,而不是decimal
  2. 如果你想要decimal进行计算,你必须转换它(我想你已经到了这里)
  3. 由于res是小数,因此每当您想要查看其值时,SOMETHING会将其转换为string。当你将鼠标悬停在Console或调试器上时,是否将它写入Console.WriteLine(res.toString("F2"));。该转换将使用您当前的区域设置。 是您总能看到逗号的原因。
  4. 要将其显示给其他人或使用您想要的格式将其写入某处,您必须指定格式或CultureInfo。
  5. a)Standard Format。例如:
    Console.WriteLine(res.toString("[##-##-##]"));
    这将使用逗号后面的2个数字格式化123456:123456.00

    b)Custom Format。例如:
    Console.WriteLine(res.ToString(CultureInfo.CreateSpecificCulture("nl-BE")));
    这将输出123456到类似[12-34-56]

    的内容

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

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

    d)Combine。发疯!两个都做!例如:
    {{1}}
    格式123456到123456,00!

答案 1 :(得分:2)

resdecimal,不是字符串。所以它不能有格式。小数是纯数学数字,没有相关格式。格式仅在您将decimal转换为string时才会出现。

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

答案 2 :(得分:0)

这将为您提供没有逗号的十进制数字,例如“15000.00”:

FormatNumber(nv, , , , 0)