关与C# ToString 时保留n位有效数字

 本人是做水文水利方面的,涉及到 水的流量,需要将计算过的值 保留3位有效数字。

网上找了些代码,都不怎么管用,

看到 ToString("G3") ,可以用

(12.567).ToString("G3");

显示结果为 :12.7    ,自动自舍五入

但是当需要 处理的数字大于1000时,结果就变了

(3212.567).ToString("G3");

显示结果为 :3.21E+03 ,不是我想要的结果 3210

3.21E+03 的 意思为 3.21 × 103  结果为 3210

 根据此所以自己写了个处理代码

public static string QFormat(double dblQ) 
    {
        string Q = dblQ.ToString("G3");
        if(Q.Contains("E"))
        {
            string[] arr = Q.Split(new string[] { "E+" }, StringSplitOptions.RemoveEmptyEntries);
            long val = Convert.ToInt64(Convert.ToDouble(arr[0]) * Math.Pow(10, Convert.ToDouble(arr[1])));
            Q = val.ToString();
        }
        return Q;
    }

这样返回的结果 就为需要的结果了 

 

QFormat(3121.567);

 

结果显示为  3210,符合自己的要求

 

哪位大神,要是有更简单的办法请奉上,谢谢

感谢 WPF QQ群的 通知帮我找到了更简单的办法  

 一句话就搞定

    /// <summary>
    /// 流量Q的格式化 取三位有效数字
    /// </summary>
    public static string QFormat(double dblQ)
    {
        return double.Parse(dblQ.ToString("G3")).ToString();
    }
QFormat(3121.567);

结果依然显示为  3210,符合自己的要求

posted @ 2013-06-20 09:36  金小鳄  阅读(7011)  评论(2编辑  收藏  举报