除法中的 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