Почему я получаю INF при делении небольших чисел в PHP - PullRequest
0 голосов
/ 29 марта 2019

У меня есть две таблицы в базе данных.У каждого есть столбец (varchar255) с небольшим числом (0-30).Я только пытаюсь разделить эти два, и вот результат:
Если один столбец имеет номер 6,575, а другой 1,291, уравнение должно быть 5,09.Он выводит 6 .Другие / большинство результатов выводит INF

Image with more equations

Числа поступают из цикла foreach из базы данных, и этокод с картинки:

echo $row["ton"]." - ".$row_w["weight"]." - ".$row["ton"] / $row_w["weight"]."<br>";

Я пробовал bcdiv и ничего не выводится, а is_infinite = 1. Чего мне не хватает?

Ответы [ 2 ]

0 голосов
/ 29 марта 2019

Спасибо @ aynber / @ Ash-b за просмотр моих плохо сохраненных значений.

$a = str_replace(",", ".", $row["ton"]);
$b = str_replace("," ,".", $row_w["weight"]);

echo $row["ton"]." - ".$row_w["weight"]." - ".$a / $b."<br>";

. вместо

Невозможно задать комментарий для ответа, но дело решено.

0 голосов
/ 29 марта 2019

Вам нужно преобразовать значения (строки символов) в float, используя floatval, прежде чем делать деление.

Инф означает, что результат бесконечен, потому что вы делите на 0 или очень маленькое число в результате неожиданного значения, возникающего при работе с символами как числами с плавающей запятой, так как программа не может понять десятичные дроби в правильном способ.

Пример:

$var = '578.23';

$float_value_of_var = floatval($var);

и ваш код может выглядеть примерно так (только для справки):

echo $row["ton"]." - ".$row_w["weight"]." - ".floatval($row["ton"]) / floatval($row_w["weight"])."<br>";
...