-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDivision.php
More file actions
32 lines (23 loc) · 948 Bytes
/
Division.php
File metadata and controls
32 lines (23 loc) · 948 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<?php
declare(strict_types=1);
namespace TinyBlocks\Math\Internal\Operations\Adapters\Scales;
use TinyBlocks\Math\BigNumber;
use TinyBlocks\Math\Internal\Scale;
final readonly class Division implements Scales
{
private Scale $divisorScale;
private Scale $dividendScale;
public function __construct(private BigNumber $dividend, private BigNumber $divisor)
{
$this->dividendScale = Scale::from(value: $this->dividend->getScale());
$this->divisorScale = Scale::from(value: $this->divisor->getScale());
}
public function applyScale(): Scale
{
if ($this->dividendScale->hasAutomaticScale() && $this->divisorScale->hasAutomaticScale()) {
$quotient = $this->dividend->toString() / $this->divisor->toString();
return $this->dividendScale->scaleOf(value: (string)$quotient);
}
return $this->dividendScale->greaterScale(other: $this->divisorScale);
}
}