我有一个从 SQL 表中提取的 gridview,它包含不同的美元数字。它们有数千、数百万或数十亿。我目前正在使用 {0:c0} 但我有兴趣将其缩小,以便仅显示三个有效数字。
例如,我希望 $3,411,216,512.07 显示为 $3.41B;而 1,066,555.54 美元将显示为 107 万美元。
在 ASP.NET 中是否有一种简单的方法可以做到这一点,或者我需要打破 jQuery 吗?或者,我应该在 C# OnRowDataBound 中执行此操作吗?
您可以将数字转换为字符串,获取前四个字符 - 假设是没有单位、逗号等的纯数字 - 将其转换回数字,将其四舍五入,然后计算原始字符串的长度以决定在哪里放置小数点以及标记它的内容,无论是 B、M、K 等。我建议在服务器端进行操作,除非您想在浏览器中进行操作,否则我认为没有意义它以某种方式交互。
我会在 OnRowDataBound 中完成。检查你的数字是否大于 10 亿,除以 10 亿,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>...)
对于超过十亿等的情况重复此操作,但仍然需要检查逗号的位置。我不知道该怎么做。这就是您可以根据需要获得前 3 个数字并应用“B”或“M”的方法。