where('code', $code)->first(); $decimals = $currency !== null ? (int) $currency->decimal_places : LotterySettings::currencyDisplayDecimals(); return (int) max(1, 10 ** max(0, min(12, $decimals))); } public static function majorToMinor(int $major, string $currencyCode): int { $major = max(0, $major); return $major * self::minorUnitFactor($currencyCode); } /** * 最小单位 → 主货币整数(占用授信时向上取整,与 preflight 按 major 校验一致)。 */ public static function minorToMajor(int $minor, string $currencyCode): int { $factor = self::minorUnitFactor($currencyCode); if ($factor <= 1) { return $minor; } if ($minor <= 0) { return 0; } return intdiv($minor + $factor - 1, $factor); } }