Unity 游戏数量单位换算(K/M/B/T)
在游戏中处理大额数值(如金币、伤害值等)时,直接显示完整数字会影响可读性。通常我们会使用 K(千)、M(百万)、B(十亿)、T(万亿)等单位来缩写显示。
数值范围 | 显示单位 | 示例 |
---|---|---|
1 - 999 | 原样显示 | 123 → "123" |
1,000 - 999,999 | K(千) | 1500 → "1.5K" |
1,000,000 - 999,999,999 | M(百万) | 2,500,000 → "2.5M" |
1,000,000,000 - 999,999,999,999 | B(十亿) | 3,200,000,000 → "3.2B" |
1,000,000,000,000+ | T(万亿) | 5,000,000,000,000 → "5T" |
补充:C#中e可以表示科学计数法,可以用来简化大数字,如
double a = 1e3; // 1 × 10³ = 1000
double b = 2.5e6; // 2.5 × 10⁶ = 2,500,000
double c = 3e-2; // 3 × 10⁻² = 0.03
基础实现版本
public static string FormatNumber(double num)
{if (num < 1e3){return num.ToString("0");}else if (num < 1e6){return (num / 1e3).ToString("0.##") + "K";}else if (num < 1e9){return (num / 1e6).ToString("0.##") + "M";}else if (num < 1e12){return (num / 1e9).ToString("0.##") + "B";}else{return (num / 1e12).ToString("0.##") + "T";}
}
优化版本(支持小数位数控制)
public static string FormatNumber(double num, int decimalPlaces = 1)
{string format = "0." + new string('#', decimalPlaces);if (num < 1e3){return num.ToString("0");}else if (num < 1e6){return (num / 1e3).ToString(format) + "K";}else if (num < 1e9){return (num / 1e6).ToString(format) + "M";}else if (num < 1e12){return (num / 1e9).ToString(format) + "B";}else{return (num / 1e12).ToString(format) + "T";}
}
测试
Console.WriteLine(FormatNumber(500)); // 输出: 500
Console.WriteLine(FormatNumber(1500)); // 输出: 1.5K
Console.WriteLine(FormatNumber(2500000)); // 输出: 2.5M
Console.WriteLine(FormatNumber(3200000000)); // 输出: 3.2B
Console.WriteLine(FormatNumber(5000000000000)); // 输出: 5T