C толкнулся с такой проблемой как в писание числовых данных в базу данных.
Есть запрос MYSQL
тип поля "z_money" в базе, FLOAT. z_money = 13.7
CODE ( SQL):
скопировать код в буфер обмена
$t = "UPDATE `" . DB_PREFIX . "test` SET `z_money`=z_money-%s WHERE `id`='%d'"; $result = mysql_query (sprintf ($t, mysql_real_escape_string ( '13' ), mysql_real_escape_string ( $user ['id'] ) ));
Такой запросы выполняет действия вычитания 13.7 - 13 вроде всё легко но в при этом в базу данных вписывается результат 0.0699997
И такое происходит с числами 0.05 до 0.09 допустим если такой же запрос выполнить с 13.4 - 13 получится 0.04 как и должно быть.
По чему так и как можно решить эту проблему?
Только прошу не писать типа сначала вычесть данные в переменной а потом уже вставить полученное в базу.
Может стоит выбрать другой тип поля не FLOAT а что то другое?
Может кто то подскажет из своих скриптов как сам решает такие вопросы с вычетанием суммы у пользователей?(Отредактировано автором: 30 Января, 2012 - 01:14:03)
|