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