= 0) { $symbol = $prefixes_pos[$nearest]; } else { $symbol = $prefixes_neg[$nearest]; } if ($magnitude < 0) { $nearest *= -1; } return [10 ** (3 * $nearest), $symbol]; } /** * @param float $value * @param string $unit * @param int $decimals * @return string */ public function format(float $value, string $unit = '', int $decimals = 2) { [$divisor, $symbol] = $this->getPrefixByMagnitude($this->getMagnitude($value)); $value /= $divisor; //Build the format string, e.g.: %.2d km $format_string = '%.' . $decimals . 'f ' . $symbol . $unit; return sprintf($format_string, $value); } }