Add ui amount conversion helpers
This commit is contained in:
parent
3f8a716ddb
commit
4c8b28b387
|
@ -14,4 +14,15 @@ pub mod state;
|
|||
// solana-sdk version
|
||||
pub use solana_sdk;
|
||||
|
||||
/// Convert the UI representation of a token amount (using the decimals field defined in its mint)
|
||||
/// to the raw amount
|
||||
pub fn ui_amount_to_amount(ui_amount: f64, decimals: u8) -> u64 {
|
||||
(ui_amount * 10_usize.pow(decimals as u32) as f64) as u64
|
||||
}
|
||||
|
||||
/// Convert a raw amount to its UI representation (using the decimals field defined in its mint)
|
||||
pub fn amount_to_ui_amount(amount: u64, decimals: u8) -> f64 {
|
||||
amount as f64 / 10_usize.pow(decimals as u32) as f64
|
||||
}
|
||||
|
||||
solana_sdk::declare_id!("TokenSVp5gheXUvJ6jGWGeCsgPKgnE3YgdGKRVCMY9o");
|
||||
|
|
|
@ -5,3 +5,21 @@ pub const DECIMALS: u8 = 9;
|
|||
|
||||
// The Mint for native SOL Token accounts
|
||||
solana_sdk::declare_id!("So11111111111111111111111111111111111111111");
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
use solana_sdk::native_token::*;
|
||||
|
||||
#[test]
|
||||
fn test_decimals() {
|
||||
assert_eq!(
|
||||
lamports_to_sol(42),
|
||||
crate::amount_to_ui_amount(42, DECIMALS)
|
||||
);
|
||||
assert_eq!(
|
||||
sol_to_lamports(42.),
|
||||
crate::ui_amount_to_amount(42., DECIMALS)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue