我可以在近协议中使用浮点吗?

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 用于当前的主网虚拟机,它对浮动的非确定性行为进行了特殊处理。因此,您可以在需要时使用它。

【讨论】:

以上是关于我可以在近协议中使用浮点吗?的主要内容,如果未能解决你的问题,请参考以下文章

short 是浮点类型吗?

浮点属性非零默认值,有可能吗?

请问各位大神,python中浮点型(float)和整形(int)可以比较大小吗?

间接成本 ~ 浮点乘法的 3 倍,真的吗? (带演示)

Lua 浮点运算

不使用 SetRoundingMode() 截断浮点值