格式化双重字符串,并在第一次数字出现后显示2个位置



我的结果应该是这样的:

double n1 = 0.024862;
double n2 = 1357512.15;
double n3 = 124.187;
Output:
N1: 0.0248
N2: 1,357,512.15
N3: 124.18

这就是我目前拥有的:

n1.ToString("#,0.00", CultureInfo.InvariantCulture);

适用于大数字的

,但是如果我有一个像0.0005524这样的数字,我将获得0.00,我想拥有0.000552

首次出现Digit

后2位数字

不确定这是否是您想要的:

private static string NFiguresAfterFirstDecimal(double d, int figures)
{
    int c = 0;
    while (Math.Abs(d) < 1.0 && Math.Abs(d) > 1E-50){
        d *= 10.0;
        c++;
    }
    d = Math.Round(d, figures) / Math.Pow(10.0, c);
    if (Math.Abs(d) < 1.0 && c > 2)
        return ((decimal) d).ToString();
    else
        return d.ToString("#,0.00", CultureInfo.InvariantCulture);
}

测试运行:

double[] list = {0.00055243435, 0.00, 0.1, 1357512.157, 1.0001, 1.1, 123.445};
foreach(double d in list)
    Console.WriteLine(NFiguresAfterFirstDecimal(d,2));

输出:

0.000552
0.00
0.10
1,357,512.16
1.00
1.10
123.44

最新更新