solana_binary_encoder/
parse_token.rs

1
2use {
3    // crate::{
4    //     account_decoder::StringDecimals,
5    // }
6    solana_account_decoder::StringDecimals,
7};
8
9pub fn real_number_string(amount: u64, decimals: u8) -> StringDecimals {
10    let decimals = decimals as usize;
11    if decimals > 0 {
12        // Left-pad zeros to decimals + 1, so we at least have an integer zero
13        let mut s = format!("{:01$}", amount, decimals + 1);
14        // Add the decimal point (Sorry, "," locales!)
15        s.insert(s.len() - decimals, '.');
16        s
17    } else {
18        amount.to_string()
19    }
20}
21
22pub fn real_number_string_trimmed(amount: u64, decimals: u8) -> StringDecimals {
23    let mut s = real_number_string(amount, decimals);
24    if decimals > 0 {
25        let zeros_trimmed = s.trim_end_matches('0');
26        s = zeros_trimmed.trim_end_matches('.').to_string();
27    }
28    s
29}