Выбор числа с плавающей точкой из столбца FLOAT () с помощью PHP и mysqli - PullRequest
0 голосов
/ 18 марта 2011

Добрый день. У меня проблема с выбором числа с плавающей запятой из базы данных MySQL с использованием переменных связывания класса mysqli.

Тип price столбца FLOAT(9,2) и его значение 1.01

Упрощенный кусок кода:

$stmt = $dbh->prepare('SELECT price FROM goods WHERE id=5');
$stmt->execute();
$stmt->bind_result(&$price);
$stmt->fetch();
echo $price;
// 1.0099999904633

Как я понял mysqli автоматически приводит к удвоению. Но почему?

Когда я меняю тип столбца в таблице на DOUBLE(9,2), все идет хорошо, и значение $price точно равно 1.01.

Есть ли способ получить значение 1.01 в переменной $price, имеющей FLOAT(9,2) в качестве типа столбца (без функций округления)?

Спасибо.

1 Ответ

0 голосов
/ 22 октября 2014

Как отмечено выше:

1,01 не может быть точно представлено как число с плавающей запятой. Как вы видите, ближайший вы можете прийти 1.0099999 .... Если вы храните денежные значения в базе данных, не используйте поплавки. Используйте тип DECIMAL или int и конвертируйте ваши значения в долларах / центах в центы

...