我可以在近协议中使用浮点吗?
Posted
技术标签:
【中文标题】我可以在近协议中使用浮点吗?【英文标题】:Can I use floating points in near protocol? 【发布时间】:2021-04-22 12:40:48 【问题描述】:浮点运算是非确定性的,因此区块链网络可能无法就链的状态达成一致。
我在我的智能合约中使用以下代码来计算根:
let mint_value = (juror_stake as f64).powf(0.8) as u128 + 1;
是否允许使用此类代码?如果不是怎么做浮点运算。
【问题讨论】:
【参考方案1】:由于舍入误差,不应使用浮点数来存储和进行计算。 (例如,在浏览器的控制台中输入 .1 + .2 == .3
)。
我认为,如果它编译、运行并按照您的意图进行操作,那么您就可以使用它。只要您使用 u128 令牌存储和执行大多数计算。
【讨论】:
【参考方案2】:在 NEAR Wasm VM 中,我们支持浮点数。我们将wasmer
用于当前的主网虚拟机,它对浮动的非确定性行为进行了特殊处理。因此,您可以在需要时使用它。
【讨论】:
以上是关于我可以在近协议中使用浮点吗?的主要内容,如果未能解决你的问题,请参考以下文章