в солидити числа все целочисленные
А откуда у Вас нецелое число? Fixed point можно только константами задавать. Или уже обновление завезли?
а если я делю и получаю не целое?
не будет такого обновления в ближайшее время
так не бывает 2/3 = 0
он сам округляет?
/** * Calculate fee (UnSafeMath) -- use it only if it ^0.8.0 * @param amount number from whom we take fee * @param scale scale for rounding. 100 is 1/100 (percent). we can encreace scale if we want better division (like we need to take 0.5% instead of 5%, then scale = 1000) */ function calculateFee(uint256 amount, uint256 scale) internal view returns (uint256) { uint a = amount / scale; uint b = amount % scale; uint c = promille_fee / scale; uint d = promille_fee % scale; // Calculate fee with ROUND DOWN // return a * c * scale + a * d + b * c + b * d / scale; // calculate fee with ROUND UP // return a * c * scale + a * d + b * c + (b * d + scale - 1) / scale; // I guess we use this //calculate fee with CLOSESTS INTEGER // return a * c * scale + a * d + b * c + (b * d + scale / 2) / scale; return a * c * scale + a * d + b * c + (b * d + scale - 1) / scale; } чекни этот пример
Обсуждают сегодня