8

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

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

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

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

new CultureInfo("en-GB")

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

4

3 回答 3

17

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

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

a)标准格式。示例:
Console.WriteLine(res.toString("F2"));
这将格式化 123456,逗号后有 2 个数字:123456.00

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

c)文化信息。示例:
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 !

于 2014-02-06T23:37:53.900 回答
3

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

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

于 2012-04-21T10:51:42.210 回答
0

这将为您提供没有逗号的小数点,例如“15000.00”:

FormatNumber(nv, , , , 0)
于 2021-04-24T16:45:06.433 回答