Solidity

將整數向下舍入到最接近的 10

  • July 17, 2021

有沒有一種好的方法可以將數字四捨五入到最接近的 10?我有一個計算數字百分比的函式,但我只想返回 10 的倍數。例如,如果它是 12%,那麼它應該返回 10,如果它是 59%,那麼它應該返回 50。

uint256 timeRemaining = block.timestamp - startTimestamp;
uint256 totalStakeTime = dayLength.mul(daySeconds);
uint256 percent = timeremaining.mul(100) / totalStakeTime;
//return 10, 20, 30, 40....90

如果您想將數字乘以 10 的倍數,您可以使用 SafeMath 執行此操作。

方法一:

uint256 num = 59;
return num.div(10).mul(10); // return 50

方法二:

uint256 num = 59;
return num.sub(num.mod(10)); // return 50

注意:這兩種方法應該可以正常工作,但 gas 成本可能會有所不同。

引用自:https://ethereum.stackexchange.com/questions/103649