2 stable releases
1.1.0 | Aug 27, 2024 |
---|---|
1.0.0 | May 8, 2024 |
#6 in #i128
78KB
1.5K
SLoC
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 fromi128
.one() -> Self
: Create a1.0
Decimal.zero() -> Self
: Create a0.0
Decimal.percent(x: i64) -> Self
: Convertx%
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 inverse1/d
for decimald
.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 fromu128
.one() -> Self
: Create a1.0
Decimal.zero() -> Self
: Create a0.0
Decimal.percent(x: u64) -> Self
: Convertx%
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 inverse1/d
for decimald
.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
Dependencies
~11–15MB
~315K SLoC