Solidity
將整數向下舍入到最接近的 10
有沒有一種好的方法可以將數字四捨五入到最接近的 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 成本可能會有所不同。