че за на? пишу 11.1 + 0.1 = 12.2 почему так? оба числа получаю с БД. пытался привести насильно к float PHP: ((float)$res2[0]->rating_total) + ((float)$cost_user) в итоге тот же результат.
var_dump() каждой переменной перед операцией сложения, код операции сложения и код вывода результата в студию...
вот вардамп странно он считает их строками хотя я только что зашел и поменял с varchar на float в бд string(5) "100.8" string(3) "0.1" float(100.9)
Вручную привел к float вот вардамп PHP: float(100.7) float(0.1) float(100.8) и прикол в том что он первый раз сохраняет на 1 больше тоисть 100.7 + 0.1 = 101.8 а на второй раз сохраняет 100.7 + 0.1 = 100.8 --- Добавлено --- не помогает. Ладно обойдусь без дробных чисел, баг какойто видимо
@Dron-Boy, во-первых, например, fetch_array() и им подобных "Возвращает массив строк соответствующих выбранной строке набора". То есть, независимо от типа поля в базе - в результате получаешь строку и уже с ней работаешь. Во-вторых, не float($var), а (float)$var. Таков синтаксис приведения типов В-третьих, арифметика с float, конечно, выполняется с погрешностью ввиду особенностей машинного представления, но не с такой большой... Так-что ошибка где-то ещё... --- Добавлено --- И если уж хранить в базе числа с точностью до n-го знака, то предпочтительнее формат decimal
это я знаю. писал правльно. И да я затупил в двух местах вносил новые данные в бд. так что плюсовалось все ок.