Cha*_*kka 1 blockchain ethereum solidity calculation
我在简单的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;
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
done() function returns 50000000000000000000
fail() function returns 49999999999999998000
Run Code Online (Sandbox Code Playgroud)
请在此处查看现场示例: https : //ropsten.etherscan.io/address/0xf45a2a66be9835fdc9e1065875808616cb8e752e#readContract
我相信问题是在这种done情况下,编译器实际上并没有发出代码来进行计算。计算是在编译时完成的,并在其位置放置一个常量。
编译器,不像在运行时的EVM,不支持十进制数学。例如,0.5 ether尽管 EVM 没有数字 0.5 的表示,但您可以编写。
| 归档时间: |
|
| 查看次数: |
113 次 |
| 最近记录: |