2 个稳定版本
| 新版本 1.1.0 | 2024 年 8 月 27 日 |
|---|---|
| 1.0.0 | 2024 年 5 月 8 日 |
#5 在 #i128
78KB
1.5K SLoC
Soroban Decimal
此代码来自 cosmwasm-std crate,该crate采用 Apache License 2.0 许可。该合约提供了一个 Decimal 结构体,用于算术操作,适合区块链 De-Fi 操作,其中精度至关重要。它确保计算精确到 18 位小数。
Decimal(i128)
方法
new(value: i128) -> Self:创建一个新的 Decimal。raw(value: i128) -> Self:从i128返回原始值。one() -> Self:创建一个1.0Decimal。zero() -> Self:创建一个0.0Decimal。percent(x: i64) -> Self:将x%转换为 Decimal。permille(x: i64) -> Self:将千分比(x/1000)转换为 Decimal。bps(x: i64) -> Self: 将基点(bps)(x/10000)转换为十进制。from_atomics(atomics: i128, decimal_places: i32) -> Self: 从原子单位和小数位数创建一个十进制数。inv(&self) -> Option<Self>: 返回十进制数d的乘法逆元1/d。from_ratio(numerator: impl Into<i128>, denominator: impl Into<i128>) -> Self: 返回以十进制形式表示的比值(分子 / 分母)。abs(&self) -> Self: 返回十进制的绝对值。to_string(&self, env: &Env) -> String: 将十进制转换为字符串。
Decimal256
方法
new(value: u128) -> Self: 创建一个新的十进制数。raw(value: u128) -> Self: 从u128返回原始值。one() -> Self:创建一个1.0Decimal。zero() -> Self:创建一个0.0Decimal。percent(x: u64) -> Self: 将x%转换为十进制。permille(x: u64) -> Self: 将千分比(x/1000)转换为十进制。bps(x: u64) -> Self: 将基点(x/10000)转换为十进制。from_atomics(atomics: u128, decimal_places: i32) -> Self: 从原子单位和小数位数创建十进制。inv(&self) -> Option<Self>: 返回十进制数d的乘法逆元1/d。from_ratio(numerator: impl Into<U256>, denominator: impl Into<U256>) -> Self: 返回比(分子/分母)作为十进制。abs(&self) -> Self: 返回十进制的绝对值。to_string(&self, env: &Env) -> String: 将十进制转换为字符串。
注意:当前 from_atomics(atomics: u128, decimal_places: i32) -> Self 支持 38 的最大 decimal_places
依赖关系
~11–14MB
~299K SLoC