我在.NET项目中使用humanizr.net来格式化日期,而且效果非常好。
现在我想将大数字格式化为可读的短数字,如下所示: 1234 - > 1.2K 50,323 - > 50.3K 就像Facebook一样...... ...
有没有办法使用Humanizer?
答案 0 :(得分:0)
尝试这样的事情:
public static string FormatLargerNumbers(double number)
{
string[] prefix = { string.Empty, "K", "M" };
var absnum = Math.Abs(number);
int add;
if (absnum < 1)
{
add = (int)Math.Floor(Math.Floor(Math.Log10(absnum)) / 3);
}
else
{
add = (int)(Math.Floor(Math.Log10(absnum)) / 3);
}
var shortNumber = number / Math.Pow(10, add * 3);
return string.Format("{0}{1}",shortNumber.ToString("0.#"), prefix[add]);
}
string formatted = FormatLargerNumbers(50323);
// Output : 50,3K
答案 1 :(得分:0)
这是一个非常好的解决方案,很幸运。
我也需要它,并且刚刚修改了您的解决方案,以便在没有 Out of Range 异常的情况下,也可以显示“十亿”。如果有人需要数十亿美元,请在此处发布。
public static string FormatLargerNumbers(double number)
{
string[] prefix = { string.Empty, "K", "M", "B" };
var absnum = Math.Abs(number);
double add;
if (absnum < 1)
{
add = (int)Math.Floor(Math.Floor(Math.Log10(absnum)) / 3);
}
else
{
add = (int)(Math.Floor(Math.Log10(absnum)) / 3);
}
var shortNumber = number / Math.Pow(10, add * 3);
return string.Format("{0}{1}", shortNumber.ToString("0.#"),
(prefix[Convert.ToInt32(add)]));
}