为什么solid中没有十进制数字?



我知道在solid中没有浮点数/双精度,但我想知道为什么?我在谷歌上搜索了一下,我能找到的都是关于如何应对这种缺乏的问题。

参见:https://ethereum.stackexchange.com/a/58751

明显的原因是浮点数本质上是不可预测的,这将使操作的结果在节点上不同。这会导致分叉。

也:https://docs.soliditylang.org/en/develop/types.html fixed-point-numbers

我认为背后的原因是各种函数计算的floating-point操作在不同的运行环境下会产生不同的结果。以太坊区块链是确定性的,它确保智能合约总是为相同的输入产生相同的输出。

同样对于大交易,浮点数舍入的微小差异将导致财务上的巨大差异

有一些"浮点数不确定"的答案。

这不是真的。通过标准化的软件实现,可以使浮点计算具有确定性。

EVM没有浮点数的原因是

  • 需求不足
  • 虚拟机实现复杂性的权衡
  • 开发者不理解问题

对于实现示例

  • 参见关于在EOS区块链上使用softfloat的讨论

  • 参见EOS float实现