繁体   English   中英

格式化不带逗号的小数

[英]Format a decimal without comma

我尝试在 c# 中将十进制格式设置为 0:0.0 尝试了此代码

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

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

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

new CultureInfo("en-GB")

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

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

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

a) 标准格式 例子:
Console.WriteLine(res.toString("F2"));
这将用逗号后的 2 个数字格式化 123456: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 !

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

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

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

FormatNumber(nv, , , , 0)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM