我有一个从SQL表中提取的gridview,它包含不同的美元数字。他们的成千上万,数百万或数十亿。我目前正在使用{0:c0},但我有兴趣减少它,以便我只显示三个有效数字。
例如,我想要$ 3,411,216,512.07显示为$ 3.41B;而$ 1,066,555.54将显示为$ 107万。
在ASP.NET中有没有一种简单的方法可以做到这一点,还是需要打破jQuery?或者,我应该在C#OnRowDataBound吗?
答案 0 :(得分:0)
您可以将数字转换为字符串,获取前四个字符 - 假设没有单位的纯数字,逗号等 - 将其转换回数字,将其四舍五入,然后计算原始字符串的长度决定在哪里放小数点以及用它标记的内容,无论是B,M,K等我建议在服务器端做这件事,除非你在浏览器中看到这一点我没有意义想以某种方式使它具有互动性。
答案 1 :(得分:0)
我会在OnRowDataBound中执行此操作。检查你的号码是否大于十亿,除以十亿,string.format在它的末尾加上“B”,然后返回前面的货币符号。 检查数字是否大于一百万......等等
你可能会编写一个算法来动态处理它,但因为这是金钱,它可能仅限于数万亿手动操作它应该快得多。
答案 2 :(得分:0)
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等的情况重复这一点,但是仍然需要检查逗号的位置。我不知道怎么做。这就是你如何获得你想要的前三个数字并应用“B”或“M”。