GeWuYou 53edd13f8f feat(localization): 添加本地化格式化器和数值显示功能
- 在LocalizationManager中注册内置格式化器包括条件、复数和紧凑数值格式化器
- 实现CompactNumberLocalizationFormatter支持{value:compact}格式化语法
- 添加数值显示扩展方法ToDisplayString和ToCompactString
- 实现NumericDisplayFormatter和NumericSuffixFormatRule数值格式化核心逻辑
- 添加数值格式化选项配置包括小数位数、四舍五入策略等参数
- 为紧凑数值格式化功能添加完整的单元测试覆盖各种数值类型和边界情况
2026-03-21 14:43:42 +08:00

58 lines
1.6 KiB
C#

using System.Numerics;
using GFramework.Core.Abstractions.Utility.Numeric;
namespace GFramework.Core.Utility.Numeric;
/// <summary>
/// 数值显示静态入口。
/// </summary>
public static class NumericDisplay
{
private static readonly NumericDisplayFormatter DefaultFormatter = new();
/// <summary>
/// 将数值格式化为展示字符串。
/// </summary>
public static string Format<T>(T value, NumericFormatOptions? options = null) where T : INumber<T>
{
return DefaultFormatter.Format(value, options);
}
/// <summary>
/// 将运行时数值对象格式化为展示字符串。
/// </summary>
public static string Format(object value, NumericFormatOptions? options = null)
{
return DefaultFormatter.Format(value, options);
}
/// <summary>
/// 使用默认紧凑风格格式化数值。
/// </summary>
public static string FormatCompact<T>(
T value,
int maxDecimalPlaces = 1,
IFormatProvider? formatProvider = null) where T : INumber<T>
{
return Format(value, new NumericFormatOptions
{
MaxDecimalPlaces = maxDecimalPlaces,
FormatProvider = formatProvider
});
}
/// <summary>
/// 使用默认紧凑风格格式化运行时数值对象。
/// </summary>
public static string FormatCompact(
object value,
int maxDecimalPlaces = 1,
IFormatProvider? formatProvider = null)
{
return Format(value, new NumericFormatOptions
{
MaxDecimalPlaces = maxDecimalPlaces,
FormatProvider = formatProvider
});
}
}