Skip to content

Commit 86b6051

Browse files
committed
Adds square root method
1 parent 6f75ac6 commit 86b6051

File tree

2 files changed

+40
-0
lines changed

2 files changed

+40
-0
lines changed

src/ElliotJReed/Maths/Number.php

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,13 @@ public function divide(int | float | string ...$number): self
7676
return $this;
7777
}
7878

79+
public function squareRoot(): self
80+
{
81+
$this->number = \bcsqrt($this->number, $this->precision);
82+
83+
return $this;
84+
}
85+
7986
public function isLessThan(int | float | string $number): bool
8087
{
8188
$result = \bccomp($this->number, (string) $number, $this->precision);

tests/ElliotJReed/Maths/NumberTest.php

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -492,6 +492,39 @@ public function testItDividesMultipleFloatingPointNumbersAsStringAndReturnsRound
492492
$this->assertSame(3, $number->asInteger(\PHP_ROUND_HALF_DOWN));
493493
}
494494

495+
public function testItReturnsTheSquareRootWhenBaseNumberIsAFloat(): void
496+
{
497+
$number = new Number(30.25);
498+
$number->squareRoot();
499+
500+
$this->assertSame('5.5', $number->asString());
501+
$this->assertSame(5.5, $number->asFloat());
502+
$this->assertSame(6, $number->asInteger());
503+
$this->assertSame(5, $number->asInteger(\PHP_ROUND_HALF_DOWN));
504+
}
505+
506+
public function testItReturnsTheSquareRootWhenBaseNumberIsAString(): void
507+
{
508+
$number = new Number('30.25');
509+
$number->squareRoot();
510+
511+
$this->assertSame('5.5', $number->asString());
512+
$this->assertSame(5.5, $number->asFloat());
513+
$this->assertSame(6, $number->asInteger());
514+
$this->assertSame(5, $number->asInteger(\PHP_ROUND_HALF_DOWN));
515+
}
516+
517+
public function testItReturnsTheSquareRootWhenBaseNumberIsAnInteger(): void
518+
{
519+
$number = new Number(25);
520+
$number->squareRoot();
521+
522+
$this->assertSame('5', $number->asString());
523+
$this->assertSame(5.0, $number->asFloat());
524+
$this->assertSame(5, $number->asInteger());
525+
$this->assertSame(5, $number->asInteger(\PHP_ROUND_HALF_DOWN));
526+
}
527+
495528
public function testItReturnsTrueWhenNumberIsLessThanTheBaseNumberWhenCheckingIfNumberIsLessThanBaseNumber(): void
496529
{
497530
$number = new Number('100.01');

0 commit comments

Comments
 (0)