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.0
Decimal。zero() -> Self
:创建一个0.0
Decimal。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.0
Decimal。zero() -> Self
:创建一个0.0
Decimal。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