soroban-decimal

Crates.iosoroban-decimal
lib.rssoroban-decimal
version1.1.0
sourcesrc
created_at2024-05-08 13:10:56.54633
updated_at2024-08-27 13:51:58.230117
descriptionA precise decimal arithmetic package for Soroban contracts
homepage
repositoryhttps://github.com/Phoenix-Protocol-Group/phoenix-contracts
max_upload_size
id1233772
size77,609
Jakub Bogucki (ueco-jb)

documentation

README

Soroban Decimal

This code is taken from the cosmwasm-std crate, which is licensed under the Apache License 2.0 The contract provides a Decimal struct for arithmetic operations, suitable for blockchain De-Fi operations, where precision is of highest importance. It ensures that calculations are accurate up to 18 decimal places.

Decimal(i128)

Methods

  • new(value: i128) -> Self: Creates a new Decimal.

  • raw(value: i128) -> Self: Returns the raw value from i128.

  • one() -> Self: Create a 1.0 Decimal.

  • zero() -> Self: Create a 0.0 Decimal.

  • percent(x: i64) -> Self: Convert x% into Decimal.

  • permille(x: i64) -> Self: Convert permille (x/1000) into Decimal.

  • bps(x: i64) -> Self: Convert basis points (x/10000) into Decimal.

  • from_atomics(atomics: i128, decimal_places: i32) -> Self: Creates a Decimal from atomic units and decimal places.

  • inv(&self) -> Option<Self>: Returns the multiplicative inverse 1/d for decimal d.

  • from_ratio(numerator: impl Into<i128>, denominator: impl Into<i128>) -> Self: Returns the ratio (numerator / denominator) as a Decimal.

  • abs(&self) -> Self: Returns the absolute value of the Decimal.

  • to_string(&self, env: &Env) -> String: Converts the Decimal to a string.

Decimal256

Methods

  • new(value: u128) -> Self: Creates a new Decimal.

  • raw(value: u128) -> Self: Returns the raw value from u128.

  • one() -> Self: Create a 1.0 Decimal.

  • zero() -> Self: Create a 0.0 Decimal.

  • percent(x: u64) -> Self: Convert x% into Decimal.

  • permille(x: u64) -> Self: Convert permille (x/1000) into Decimal.

  • bps(x: u64) -> Self: Convert basis points (x/10000) into Decimal.

  • from_atomics(atomics: u128, decimal_places: i32) -> Self: Creates a Decimal from atomic units and decimal places.

  • inv(&self) -> Option<Self>: Returns the multiplicative inverse 1/d for decimal d.

  • from_ratio(numerator: impl Into<U256>, denominator: impl Into<U256>) -> Self: Returns the ratio (numerator / denominator) as a Decimal.

  • abs(&self) -> Self: Returns the absolute value of the Decimal.

  • to_string(&self, env: &Env) -> String: Converts the Decimal to a string.

N.B.: from_atomics(atomics: u128, decimal_places: i32) -> Self currently supports maximum 38 as input for decimcal_places

Commit count: 1228

cargo fmt