File size: 744 Bytes
e0b68d2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
"""

格式化工具库

"""
from typing import Any

def format_compact_number(value: Any) -> str:
    """格式化大数字,采用 K (千) / M (百万) / B (十亿) 单位展示。"""
    try:
        number = float(value or 0)
    except (TypeError, ValueError):
        return "0"

    abs_num = abs(number)
    if abs_num >= 1_000_000_000:
        formatted = f"{number / 1_000_000_000:.1f}B"
    elif abs_num >= 1_000_000:
        formatted = f"{number / 1_000_000:.1f}M"
    elif abs_num >= 1_000:
        formatted = f"{number / 1_000:.1f}K"
    else:
        return str(int(number)) if number.is_integer() else f"{number:.1f}"
    
    return formatted.replace(".0B", "B").replace(".0M", "M").replace(".0K", "K")