Skip to content

Commit c3696ca

Browse files
authored
[10.x] Fixing number helper for floating 0.0 (#49277)
* added test case for 0.0 and 0.00 in Number helper * added int type casting while checking for 0 I have added tests which are failing if we pass 0.0 or 0.00 floating value for 0 giving Division by zero exception... * Fix comparison of float values in summarize method * Refactor number formatting and summarization * Fix formatting in SupportNumberTest.php * Refactor SupportNumberTest abbreviate method
1 parent 1771cd5 commit c3696ca

File tree

2 files changed

+10
-2
lines changed

2 files changed

+10
-2
lines changed

src/Illuminate/Support/Number.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -193,8 +193,8 @@ protected static function summarize(int|float $number, int $precision = 0, ?int
193193
}
194194

195195
switch (true) {
196-
case $number === 0:
197-
return '0';
196+
case floatval($number) === 0.0:
197+
return $precision > 0 ? static::format(0, $precision, $maxPrecision) : '0';
198198
case $number < 0:
199199
return sprintf('-%s', static::summarize(abs($number), $precision, $maxPrecision, $units));
200200
case $number >= 1e15:

tests/Support/SupportNumberTest.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ public function testFormat()
1212
$this->needsIntlExtension();
1313

1414
$this->assertSame('0', Number::format(0));
15+
$this->assertSame('0', Number::format(0.0));
16+
$this->assertSame('0', Number::format(0.00));
1517
$this->assertSame('1', Number::format(1));
1618
$this->assertSame('10', Number::format(10));
1719
$this->assertSame('25', Number::format(25));
@@ -193,6 +195,9 @@ public function testToHuman()
193195
$this->assertSame('1 thousand quadrillion quadrillion', Number::forHumans(1000000000000000000000000000000000));
194196

195197
$this->assertSame('0', Number::forHumans(0));
198+
$this->assertSame('0', Number::forHumans(0.0));
199+
$this->assertSame('0.00', Number::forHumans(0, 2));
200+
$this->assertSame('0.00', Number::forHumans(0.0, 2));
196201
$this->assertSame('-1', Number::forHumans(-1));
197202
$this->assertSame('-1.00', Number::forHumans(-1, precision: 2));
198203
$this->assertSame('-10', Number::forHumans(-10));
@@ -246,6 +251,9 @@ public function testSummarize()
246251
$this->assertSame('1KQQ', Number::abbreviate(1000000000000000000000000000000000));
247252

248253
$this->assertSame('0', Number::abbreviate(0));
254+
$this->assertSame('0', Number::abbreviate(0.0));
255+
$this->assertSame('0.00', Number::abbreviate(0, 2));
256+
$this->assertSame('0.00', Number::abbreviate(0.0, 2));
249257
$this->assertSame('-1', Number::abbreviate(-1));
250258
$this->assertSame('-1.00', Number::abbreviate(-1, precision: 2));
251259
$this->assertSame('-10', Number::abbreviate(-10));

0 commit comments

Comments
 (0)