#numbers #metrics #abbreviation #prefix

rs-abbreviation-number

使用公制前缀缩写数字

4 个版本 (2 个破坏性更新)

0.3.1 2024 年 4 月 24 日
0.2.1 2024 年 4 月 19 日
0.1.1 2024 年 4 月 19 日
0.1.0 2024 年 4 月 18 日

#2 in #abbreviation

每月 36 次下载
diskanalyzer 中使用

MIT/Apache

14KB
199

在 Rust 中缩写或展开数字

对于小于 1 的数字

输入 输出
0.1 100m
0.01 10m
0.001 1m
0.000_000_001 1n
0.000_000_000_000_000_000_000_000_000_1 100q

对于大于 1 的数字

输入 输出
1_000 1K
1_000_000 1M
1_090 1.09K
001_090 1.09K
123_000_000_000_000_000_000 123E
-123_000_000_000_000_000_000 -123E
1_000_000_000_000_000_000_000_000_000_000 1Q
输入 输出
1K 1000
1.09K 1090
1_090 1.09K
123E 123_000_000_000_000_000_000
1Q 1_000_000_000_000_000_000_000_000_000_000

使用示例


fn main() {

    // numbers greater then 1:
    println!("{}", 123.abbreviate_number(&Default::default())); // result: 123
    println!("{}", 123_000.0.abbreviate_number(&Default::default())); //result: 123K

    println!("{}", "1K".unabbreviate_number(&Default::default())); //result: 1000.0
    println!("{}", "1M".unabbreviate_number(&Default::default())); //result: 1000000.0

    // numbers less then 1:
    println!("{}", (0.1).abbreviate_number(&Default::default())); // result: 100m
    println!("{}",(0.000_000_001).abbreviate_number(&Default::default())); //result: 1n

    println!("{}", "111z".unabbreviate_number(&Default::default())); // result : 0.000000000000000000111
    println!("{}", "100n".unabbreviate_number(&Default::default())); // result : 0.0000001

}

也适用于大整数

fn main() {
    let big_num: i128 = 999_509_999_999_999_000_123_123_000_000_123;
    println!("{}", big_num.abbreviate_number(&Default::default())); // result : 999.5Q
}

自定义格式

fn main(){
 assert_eq!(
            "100-q",
            (0.000_000_000_000_000_000_000_000_000_1).abbreviate_number(&AbbreviationOptions {
                padding: 0,
                separator: "-".to_string()
            })
        );

 assert_eq!(
            "-100   q",
            (-0.000_000_000_000_000_000_000_000_000_1).abbreviate_number(&AbbreviationOptions {
                padding: 3,
                ..Default::default()
            })
        );
}

注意

符号区分大小写,程序将自动删除前导零(001 将变为 1 等)

公制前缀表

符号 基数
q $10^ {-30}$
r $10^ {-27}$
y $10^ {-24}$
z $10^ {-21}$
a $10^ {-18}$
f $10^ {-15}$
p $10^ {-12}$
n $10^ {-9}$
μ $10^ {-6}$
m $10^ {-3}$
$10^{0}$
K $10^{3}$
M $10^ {6}$
G $10^ {9}$
T $10^ {12}$
P $10^ {15}$
E $10^ {18}$
Z $10^ {21}$
Y $10^ {24}$
R $10^ {27}$
Q $10^{30}$

TODO

- [ ] Optimize Code
- [ ] Create Custom Symbols 
- [x] Custom separator pass by option
- [ ] Create Unit Conversion 

无运行时依赖