如何在网格视图中将货币四舍五入为有效数字

本文关键字:货币 四舍五入 有效数字 网格 视图 | 更新日期: 2023-09-27 18:32:10

我有一个从SQL表中提取的网格视图,它包含不同的美元数字。 它们有数千、数百万或数十亿。 我目前正在使用 {0:c0},但我有兴趣缩小它,以便我只显示三个有效数字。

例如,我希望 $3,411,216,512.07 显示为 $3.41B; 而 $1,066,555.54 将显示为 $1.07M。

有没有一种简单的方法可以在 ASP.NET 中做到这一点,或者我需要分解jQuery? 或者,我应该在 C# OnRowDataBound 中执行此操作吗?

如何在网格视图中将货币四舍五入为有效数字

您可以将数字转换为字符串,抓住前四个字符 - 假设一个没有单位、逗号等的纯数字 - 将其转换回数字,将其四舍五入,然后计算原始字符串的长度以决定将小数点放在哪里以及用什么来标记它,无论是 B, M、K 等 我建议在服务器端这样做,我认为在浏览器中这样做没有意义,除非您想以某种方式使其具有交互性。

我会在OnRowDataBound中这样做。检查你的数字是否大于十亿,除以十亿,string.format在其末尾设置"B",并在正面格式化货币符号,然后返回。检查该数字是否大于一百万...等

你可以写一个算法来动态处理它,但由于这是钱,而且它可能仅限于数万亿,手动做应该快得多。

    if(n>999999)
    {
    string number = Convert.ToString(n.slice[0,3]) + "M";
    ... 
//> (apply it to your datatable and then show it (in datagridview if that's
//> what you're using)
    }
   else if (n>...)

对于它超过Bilion等的情况重复此操作,但仍需要检查逗号的位置。我不知道该怎么做。这就是您可以根据需要获取前 3 个数字并应用"B"或"M"的方法。