C# 限制小数点后的位数

C# 限制小数点后的位数,c#,string-formatting,C#,String Formatting,为了限制小数点后的位数,我在我的网页上做了以下操作 Single nnuma = Convert.ToSingle(dr["num1"].ToString()); Single numb = Convert.ToSingle(dr["num2"].ToString()); 我必须把小数点后的位数限制为3。在单一数据类型中,这是如何实现的?regex始终是答案;) 也许你可以试试这个 nnuma.ToString(“#.#####”) numb.ToString(“#.#####”) 你可以试试

为了限制小数点后的位数,我在我的网页上做了以下操作

Single nnuma = Convert.ToSingle(dr["num1"].ToString());
Single numb = Convert.ToSingle(dr["num2"].ToString());

我必须把小数点后的位数限制为3。在单一数据类型中,这是如何实现的?

regex始终是答案;)


也许你可以试试这个

nnuma.ToString(“#.#####”)

numb.ToString(“#.#####”)

你可以试试这个。这也将正确地精确到最后一个数字,即0.6666将是0.667

decimal num = 20.123456789m;
Single x = Convert.ToSingle(String.Format("{0:00.000}", num));

您正在寻找的操作是:

Math.Round
与单数一起使用时返回一个double,因此之后需要转换为Single(float)。作为一个旁注:您可能想考虑使用<代码>十进制< /代码> s,如果小数精度是一个问题。


请注意,
Math.Round
的重载执行,即
0.0005
变为
0.000
,但
0.0015
变为
0.002
。如果您需要不同类型的舍入,请改用。

非常简单。只需写#以限制小数点后的数字

num.ToString(“0.0000#”)限制为4位


num.ToString(“0.0#”)限制为1位

检查一下:显然,对某些人来说,眨眼是不够的。(这确实有效,而且不是处理字符串的最糟糕的方式)我尝试了一下,得到了一些奇怪的结果。
decimal num = 20.123456789m;
Single x = Convert.ToSingle(String.Format("{0:00.000}", num));
Single unrounded = (Single)dr["num1"];  // change if the DB type is not a single
double rounded = Math.Round(unrounded, 3);
Single roundedSingle = (Single)rounded;