BIG阳
也许这样的事情会奏效?const f = (x,y) => ((x / y) * y) + (x%y >= 5n*(y/10n) ? y : 0n);const y = 100n; // amount of padding, 100 = 2 last digits will become 0, 1000 = 3 last, etc. console.log(f(1100n, y)); // 1100nconsole.log(f(1149n, y)); // 1100nconsole.log(f(1150n, y)); // 1200nconsole.log(f(1199n, y)); // 1200nconsole.log(f(1200n, y)); // 1200nconsole.log(f(11499n, 1000n)); // 11000nconsole.log(f(11500n, 1000n)); // 12000nconsole.log(f(123456789n, y)); // 123456800n<!-- See browser console for output -->将从数字(x / y) * y中删除最后两位数字。例如:y = 100x(x/y) = 1149n / 100n = 11n
(x/y) * y = 11n * 100n = 1100n现在只需决定是添加y到上述结果(即:向上舍入)还是保持原样(向下舍入)。可能有一种更数学的方法可以做到这一点,但一种方法可能是使用三元。例如,对于1149,我们要变为 0 的最后一位是49,可以检查它是否大于或等于 50,如果是,则添加y。如果小于 50,则加 0。