我知道在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实现