如何简单地截断显示的数字

时间:2016-07-01 07:46:48

标签: math c#-3.0 rounding truncate

我想知道将数字转换为截断圆角形式的最简单方法 我知道很多方法“手动”(手动截断,然后用逗号然后围绕数字),但我认为有更简单的方法(可能使用数学方法)。

示例:
1 234 567应为1,2 M 1 567 890应为1.6 M

2 个答案:

答案 0 :(得分:1)

类似的东西:

static string FormatNumber(uint n)
{
    if (n < 1000)
        return n.ToString();
    if (n < 10000)
        return String.Format("{0:#,.##}K", n - 5);
    if (n < 100000)
        return String.Format("{0:#,.#}K", n - 50);
    if (n < 1000000)
        return String.Format("{0:#,.}K", n - 500);
    if (n < 10000000)
       return String.Format("{0:#,,.##}M", n - 5000);
    if (n < 100000000)
       return String.Format("{0:#,,.#}M", n - 50000);
    if (n < 1000000000)
       return String.Format("{0:#,,.}M", n - 500000);
    return String.Format("{0:#,,,.##}B", n - 5000000);
    }

会给你这个输出:

1249            1.24K
12499           12.4K
124999          124K
1249999         1.24M
12499999        12.4M
124999999       124M
1249999999      1.24B

我认为没有内置库可以做到这一点。

答案 1 :(得分:1)

以10为底的对数的整数部分为您提供科学记数法中出现的指数。

如果您想要s有效数字,请将十进制除以指数进行归一化,将其重新缩放10到s-1并进行舍入。

e= floor(log10(x)); // => e = 6
x= Round(x * pow(10, s - 1 - e)); // => x = 12, x = 16