Ошибка bcdiv(): Argument #1 ($num1) is not well-formed

Рейтинг: 0Ответов: 1Опубликовано: 27.05.2023

Помогите пожалуйста пофиксить данную ошибку

Данные приходят с внешнего api в float формате, цель сделать из float строку и обрезать в конце нули (чтобы также прогонять подобные строки '0.5450000' => '0.545')

<?php
function to_string($value, $fix = 12) {
    $string = bcdiv($value, 1, $fix);
    return $string = $fix > 0 ? rtrim(rtrim($string, '0'), '.') : $string;
}

$result = to_string(1.5);
echo gettype($result) .' '. $result; // string 1.5

$result = to_string(1.0E-6); // Ошибка bcdiv(): Argument #1 ($num1) is not well-formed
echo gettype($result) .' '. $result;

https://onlinephp.io/c/8a22f

Ответы

▲ 1Принят

Попробуйте number_format

<?php
    function to_string($value, $fix = 12) {
        $string = bcdiv(number_format($value), 1, $fix);
        return $string = $fix > 0 ? rtrim(rtrim($string, '0'), '.') : $string;
    }
    
    $result = to_string(1.5);
    echo gettype($result) .' '. $result;
    
    $result = to_string(1.0E-6);
    echo gettype($result) .' '. $result;