繁体   English   中英

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

[英]Why are there no decimal numbers in Solidity?

我知道 Solidity 中没有浮点数/双精度数,但我想知道为什么? 我用谷歌搜索了它,我能找到的只是关于如何处理这种缺乏的问题。

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

同样对于大宗交易,浮点数的四舍五入很小的差异会导致很大的差异

请参阅: https ://ethereum.stackexchange.com/a/58751

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

另外: https ://docs.soliditylang.org/en/develop/types.html#fixed-point-numbers

有一些答案是“浮点数不是确定性的”。

这不是真的。 浮点计算可以通过标准化的软件实现来确定。

EVM没有浮点的原因是

  • 需求不足
  • VM 实现复杂性的权衡
  • 开发人员不理解问题

对于一个实现示例

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM