为了限制小数点后的位数,我在我的网页中做了以下操作。限制小数点后的位数
Single nnuma = Convert.ToSingle(dr["num1"].ToString());
Single numb = Convert.ToSingle(dr["num2"].ToString());
我要的小数点后的位数限制为3。这是如何在这里完成的单一数据类型?
为了限制小数点后的位数,我在我的网页中做了以下操作。限制小数点后的位数
Single nnuma = Convert.ToSingle(dr["num1"].ToString());
Single numb = Convert.ToSingle(dr["num2"].ToString());
我要的小数点后的位数限制为3。这是如何在这里完成的单一数据类型?
你可以试试这个。这也将适当精度的最后一位,即0.6666将是0.667
decimal num = 20.123456789m;
Single x = Convert.ToSingle(String.Format("{0:00.000}", num));
正则表达式是永远的答案;)
var n = Regex.Replace(convertedToSingle.ToString(), @"([^.]*\.\d{0,3}).*", "$1");
-1。虽然很有趣,但这是非常有建设性的答案。 – 2012-03-07 06:12:47
显然对某些人来说眨眼是不够的。 (这确实起作用,并不是处理字符串的最糟糕的方式) – sweaver2112 2012-03-07 06:15:46
也许你可以试试这个
nnuma.ToString() “####”;
numb.ToString(“#。###”);
我得到了一些奇怪的结果。 – sweaver2112 2012-03-07 06:24:55
你正在寻找的操作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;
Math.Round
与单个使用时返回了一倍,因此需要之后转换为Single(浮动)。作为一个方面说明:如果小数精度是个问题,您可能需要考虑使用decimal
作为替代方案。
注意,该过载的Math.Round
执行Banker's Rounding,即0.0005
变得0.000
,但0.0015
0.002
变。如果您需要其他类型的舍入,请改用Math.Round(Double, Int32, MidpointRounding) overload。
非常简单。只需写入#限制十进制后的数字。
num.ToString(“0.0000#”) - 限制为4位;
num.ToString(“0.0#”) - 限制为1位;
选中此:http://stackoverflow.com/questions/3814190/limiting-double-to-3-decimal-places – 2012-03-07 06:00:49