除法中的 solidity 全局变量 uint256 不起作用
solidity global variables uint256 in division its not work
示例:
uint256 unit = 10000000000000000 * (100 / 1000);
这是工作。
全局变量:
uint256 ratio = 100; //in global
uint256 unit = 10000000000000000 * (ratio / 1000); //in function
不行,结果总是0。
在 Solidity 中不支持分数除法。至于如何划分可以参考the documentation。您的代码中发生的事情是四舍五入为 0 的除法结果。
您可以找到有关固定点变量如何在 Solidity 中工作的信息 here。您可以尝试使用这些,但您真的应该尽量避免在代码中使用小数。
在你的情况下,你可以用 uint256 unit = 10000000000000000 / (1000 / ratio);
替换表达式,只要 ratio < 1000
示例:
uint256 unit = 10000000000000000 * (100 / 1000);
这是工作。
全局变量:
uint256 ratio = 100; //in global
uint256 unit = 10000000000000000 * (ratio / 1000); //in function
不行,结果总是0。
在 Solidity 中不支持分数除法。至于如何划分可以参考the documentation。您的代码中发生的事情是四舍五入为 0 的除法结果。
您可以找到有关固定点变量如何在 Solidity 中工作的信息 here。您可以尝试使用这些,但您真的应该尽量避免在代码中使用小数。
在你的情况下,你可以用 uint256 unit = 10000000000000000 / (1000 / ratio);
替换表达式,只要 ratio < 1000