C# Double 按有效数字 ToString

将double转换为n有效数字的字符

我找了各种帖子包括在微软文档搜索 ‘significant digits’;最接近的是ToString(“Gx”)
但是返回是不大于这个x有效位的字符串, 举例

double a=1.2;
string s=a.ToString("G3");

得到1.2而不是1.20

所以就写了一个函数

        string DoubleToStringSignificantDigits(double a, int SignificantDigits)
        {
            string formaterG = 'G' + SignificantDigits.ToString("N0");
            string strResult = a.ToString(formaterG);
            int resultLength = SignificantDigits;
            if (strResult.IndexOf('-') >= 0) resultLength++;
            if (strResult.IndexOf('.') >= 0) resultLength++;
            if (Math.Abs(a) < 1) resultLength++; //绝对值小于1,有一个整数0不算有效位
            if (strResult.Length < resultLength)
            {
                if (strResult.IndexOf('.') < 0)
                {
                    strResult += '.';
                    resultLength++;
		}
                strResult = strResult.PadRight(resultLength, '0');
            }
            return (strResult);
         }

结果

double[] x = new double[] { 100, 99, 12.12, 1.1234, 1.2, 0.2, 0.12345 , -0.2, -1.2, -123};
转换
DoubleToStringSignificantDigits(x[i], 3)
得到
100
99.0
12.1
1.12
0.200
0.123
-0.200
-1.20
-123

你可能感兴趣的:(编程,技术,经验,C#,ToString,有效数)