From ccf7ca4a9a273f88e3395180529f36a84d50576a Mon Sep 17 00:00:00 2001 From: Zaib Khan Date: Fri, 29 Aug 2025 12:47:33 +0100 Subject: [PATCH 1/5] Add formatPercentage method to Number class Adds a new method to format numbers as percentages with customizable precision and locale support. --- src/Illuminate/Support/Number.php | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/Illuminate/Support/Number.php b/src/Illuminate/Support/Number.php index 1162a9c1dfc7..15908ddc78a5 100644 --- a/src/Illuminate/Support/Number.php +++ b/src/Illuminate/Support/Number.php @@ -439,4 +439,24 @@ protected static function ensureIntlExtensionIsInstalled() throw new RuntimeException('The "intl" PHP extension is required to use the ['.$method.'] method.'); } } + + /** + * Format a number as a percentage with custom precision. + * + * @param float|int $number + * @param int $precision + * @param string|null $locale + * @return string|false + */ + public static function formatPercentage($number, $precision = 2, $locale = null) + { + if (!is_numeric($number)) { + return false; + } + + $formatter = new NumberFormatter($locale ?? app()->getLocale(), NumberFormatter::PERCENT); + $formatter->setAttribute(NumberFormatter::FRACTION_DIGITS, $precision); + + return $formatter->format($number / 100); + } } From fb61c17a35d6f188e8fc746ed08d200c8030d4e6 Mon Sep 17 00:00:00 2001 From: Zaib Khan Date: Fri, 29 Aug 2025 12:58:19 +0100 Subject: [PATCH 2/5] Minor update to trigger AI review --- src/Illuminate/Support/Number.php | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Illuminate/Support/Number.php b/src/Illuminate/Support/Number.php index 15908ddc78a5..c114832258b8 100644 --- a/src/Illuminate/Support/Number.php +++ b/src/Illuminate/Support/Number.php @@ -452,6 +452,7 @@ public static function formatPercentage($number, $precision = 2, $locale = null) { if (!is_numeric($number)) { return false; + } $formatter = new NumberFormatter($locale ?? app()->getLocale(), NumberFormatter::PERCENT); From 39dd260421ec23b1fc4ea03fe69580450d63b4e3 Mon Sep 17 00:00:00 2001 From: Zaib Khan Date: Sun, 31 Aug 2025 15:58:19 +0100 Subject: [PATCH 3/5] fixes added --- src/Illuminate/Support/Number.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Illuminate/Support/Number.php b/src/Illuminate/Support/Number.php index c114832258b8..ce090a500b2e 100644 --- a/src/Illuminate/Support/Number.php +++ b/src/Illuminate/Support/Number.php @@ -451,8 +451,9 @@ protected static function ensureIntlExtensionIsInstalled() public static function formatPercentage($number, $precision = 2, $locale = null) { if (!is_numeric($number)) { - return false; + return false; + } $formatter = new NumberFormatter($locale ?? app()->getLocale(), NumberFormatter::PERCENT); From 61293d487acb0736506931aa33fcf3fd44f4e634 Mon Sep 17 00:00:00 2001 From: Zaib Khan Date: Tue, 2 Sep 2025 13:20:55 +0100 Subject: [PATCH 4/5] updated some spacing issue --- src/Illuminate/Support/Number.php | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/Illuminate/Support/Number.php b/src/Illuminate/Support/Number.php index ce090a500b2e..2bbff50df4df 100644 --- a/src/Illuminate/Support/Number.php +++ b/src/Illuminate/Support/Number.php @@ -450,13 +450,12 @@ protected static function ensureIntlExtensionIsInstalled() */ public static function formatPercentage($number, $precision = 2, $locale = null) { - if (!is_numeric($number)) { - + if (!is_numeric($number)) { return false; - } $formatter = new NumberFormatter($locale ?? app()->getLocale(), NumberFormatter::PERCENT); + $formatter->setAttribute(NumberFormatter::FRACTION_DIGITS, $precision); return $formatter->format($number / 100); From 04ba38f31bdeb6ff84630956303b5bff6ecd292a Mon Sep 17 00:00:00 2001 From: Zaib Khan Date: Tue, 2 Sep 2025 13:23:13 +0100 Subject: [PATCH 5/5] updated some spacing issue --- src/Illuminate/Support/Number.php | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Illuminate/Support/Number.php b/src/Illuminate/Support/Number.php index 2bbff50df4df..b563fad55ae1 100644 --- a/src/Illuminate/Support/Number.php +++ b/src/Illuminate/Support/Number.php @@ -450,6 +450,7 @@ protected static function ensureIntlExtensionIsInstalled() */ public static function formatPercentage($number, $precision = 2, $locale = null) { + if (!is_numeric($number)) { return false; }