gpt4 book ai didi

blockchain - 以太坊坚固性计算的奇怪行为

转载 作者:行者123 更新时间:2023-12-02 14:57:46 25 4
gpt4 key购买 nike

我在下面编写了这个简单的 solidity 代码来计算一些数字。但是,以太坊区 block 链在每个函数上给出了不同的输出。我的代码有什么问题还是以太坊区 block 链问题?

我的 solidity 代码:

pragma solidity ^0.4.24;

contract Calculate {

uint balance = 50000000000000000000;

function done() public pure returns (uint) {
return (50000000000000000000 / 3000) * 3000;
}

function fail() public view returns (uint) {
return (balance / 3000) * 3000;
}

}

输出:

done() function returns 50000000000000000000

fail() function returns 49999999999999998000

请在此处查看实时示例: https://ropsten.etherscan.io/address/0xf45a2a66be9835fdc9e1065875808616cb8e752e#readContract

最佳答案

我认为问题是在 done 情况下,编译器实际上并没有发出代码来进行计算。计算在编译时完成,并在其位置放置一个常量。

与运行时的 EVM 不同,编译器确实支持十进制数学。例如。你可以写 0.5 ether 尽管 EVM 没有数字 0.5 的表示。

关于blockchain - 以太坊坚固性计算的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52138753/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com