通过Math类的Pow方法实现,代码实现如下:
public static double Round(double d, int i)
        
{
            
if (d >= 0)
            
{
                d 
+= 5 * Math.Pow(10-(i + 1));//
            }

            
else
            
{
                d 
+= -5 * Math.Pow(10-(i + 1));

            }

            
string str = d.ToString();
            
string[] strs = str.Split('.');
            
int idot = str.IndexOf('.');
            
string prestr = strs[0];
            
string poststr = strs[1];
            
if (poststr.Length > i)
            
{
                poststr 
= str.Substring(idot + 1, i);//截取需要位数
            }


            
if (poststr.Length <= 2)
            
{
                poststr 
= poststr + "0";
            }

            
string strd = prestr + "." + poststr;
            d 
= Double.Parse(strd);//将字符串转换为双精度实数 
            return d;
        }

参数d表示要四舍五入的数;i表示要保留的小数点后的位数。


从csdn上看到帖子优化算法如下
public static double Round1(double d, int i)

{

    
string str = "0".PadLeft(i, '0');

    str 
= d.ToString("." + str);

    
return Convert.ToDouble(str);

}


posted on 2007-12-30 00:32  Travelling  阅读(369)  评论(0编辑  收藏  举报