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); } /** 最小单位 → 主货币整数(四舍五入)。 */ public static function minorToMajor(int $minor, string $currencyCode): int { $factor = self::minorUnitFactor($currencyCode); if ($factor <= 1) { return $minor; } if ($minor >= 0) { return intdiv($minor + intdiv($factor, 2), $factor); } return -intdiv(-$minor + intdiv($factor, 2), $factor); } }