Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
80.00% covered (warning)
80.00%
8 / 10
0.00% covered (danger)
0.00%
0 / 1
CRAP
0.00% covered (danger)
0.00%
0 / 1
DecimalNormalizer
80.00% covered (warning)
80.00%
8 / 10
0.00% covered (danger)
0.00%
0 / 1
6.29
0.00% covered (danger)
0.00%
0 / 1
 toFloat
80.00% covered (warning)
80.00%
8 / 10
0.00% covered (danger)
0.00%
0 / 1
6.29
1<?php
2
3namespace Domain\Shared\Support;
4
5final class DecimalNormalizer
6{
7    public static function toFloat(mixed $value): float
8    {
9        if (is_null($value)) {
10            return 0.0;
11        }
12
13        if (is_string($value)) {
14            $value = trim($value);
15
16            if ($value === '') {
17                return 0.0;
18            }
19
20            if (str_contains($value, ',') && str_contains($value, '.')) {
21                $value = str_replace('.', '', $value);
22            }
23
24            $value = str_replace(',', '.', $value);
25        }
26
27        return (float) $value;
28    }
29}