"19", 19.50 -> "19,5", 19.55 -> "19,55"). */ public static function format(float|int|string|null $amount, string $currency = '€'): ?string { if ($amount === null) { return null; } $amount = round((float) $amount, 2); $cents = (int) round($amount * 100); $decimals = match (true) { $cents % 100 === 0 => 0, $cents % 10 === 0 => 1, default => 2, }; return $currency.number_format($amount, $decimals, ',', '.'); } }