【发布时间】:2021-01-12 12:21:59
【问题描述】:
我想使用 Rust 对 NEAR 智能合约中的 Balance (u128) 数字执行以下操作:
a*b / (a+b)
为了避免溢出,我需要将类型转换为支持更大数字的类型。正确的做法是什么?
我找到了一个construct_uint! 宏。这是正确的做法还是有更好的方法?
construct_uint! {
/// 256-bit unsigned integer.
pub struct u256(4);
}
...
let aB = u256::from(a);
let bB = u256::from(b);
return (aB*bB / (aB+bB)).as_u128();
【问题讨论】:
-
这是我们在锁定合约中这样做的方式。你可以在这里看到它的实际效果:github.com/near/core-contracts/blob/…
标签: rust nearprotocol