限制小数点后的位数

时间:2012-03-07 05:47:53

标签: c# string-formatting

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

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

我必须将小数点后的位数限制为3.如何在单数据类型中完成此操作?

5 个答案:

答案 0 :(得分:1)

也许你可以试试这个

nnuma.ToString(“#。###”);
numb.ToString(“#。###”);

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

您正在寻找的操作是Math.Round

Single unrounded = (Single)dr["num1"];  // change if the DB type is not a single
double rounded = Math.Round(unrounded, 3);
Single roundedSingle = (Single)rounded;
当与Single一起使用时,

Math.Round返回一个double,因此之后需要转换为Single(float)。作为旁注:如果小数精度是一个问题,您可能需要考虑使用decimal作为替代。

请注意,Math.Round的此重叠执行Banker's Rounding,即0.0005变为0.000,但0.0015变为0.002。如果您想要其他类型的舍入,请改用Math.Round(Double, Int32, MidpointRounding) overload

答案 3 :(得分:0)

非常简单。只需写入即可限制十进制后的数字。

num.ToString(" 0.0000#") - 限制为4位数;

num.ToString(" 0.0#") - 限制为1位数;

答案 4 :(得分:-1)

正则表达式始终是答案;)

var n = Regex.Replace(convertedToSingle.ToString(), @"([^.]*\.\d{0,3}).*", "$1");