Add ui amount conversion helpers

This commit is contained in:
Michael Vines 2020-08-04 21:28:40 -07:00 committed by mergify[bot]
parent 3f8a716ddb
commit 4c8b28b387
2 changed files with 29 additions and 0 deletions

View File

@ -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");

View File

@ -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)
);
}
}