Math
四捨五入定點整數
如果我使用定點算法來表示速率,例如,射線中的 2%(十進制精度 27)將是
102000000000000000000000000000
.如果我有一個像
101333333333333333333333333333
(1.33%) 這樣的比率,我怎樣才能將它四捨五入到最接近的 0.25%?我希望
10125000000000000000000000000
(1.25%) 成為結果。
它們是整數,因此您可以像整數一樣將它們四捨五入。
要將整數 A 舍入到 B,請按照以下 trunc(A / B) * B 進行。
// SPDX-License-Identifier: MIT pragma solidity >=0.4.0 <0.9.0; contract Test { uint256 public one = 10**27; uint256 public two_percent = 10**27 + 0.02 * 10**27; uint256 public rate = 10**27 + 0.01 * 10**27 + uint256(0.01 * 10**27) / 3; uint256 public round = 0.0025 * 10**27; function roundDown() public view returns (uint256) { return ((rate / round) * round); } function roundUp() public view returns (uint256) { return (((rate + round - 1) / round) * round); } }