Помогите с mysql, не получается с типами данных DOUBLE

snug

Новичок
Помогите с mysql, не получается с типами данных DOUBLE

Здравствуйте.

В таблице есть данные с типом DOUBLE. В ячейке стоит 5.125 я запросом
UPDATE `mh_users` SET `user_balance`=user_balance-$a WHERE `login`=$b
вычитаю 5, то есть $a=5 из 5.125(это баланс пользователя) ну а $b=это логин пользователя.

вношу изменения и ожидаю что в ячейке будет 0.125 а там 0.252000000000003

Подскажите почему не 0.125 ?
 

dimagolov

Новичок
начни с запросов:
[sql]
INSERT INTO `mh_users` (`login`, `user_balance`) VALUES ( '123', 5.125);
UPDATE `mh_users` SET `user_balance`= `user_balance` - 5 WHERE `login` = '123';
SELECT `user_balance` FROM `mh_users`WHERE `login` = '123';
[/sql]
доложи о результате, потом продолжим.
 

snug

Новичок
А это разве не одно и тоже? Только место цифр "5" "123" переменные. И главное иногда нормально получается, а иногда выдаёт типа 0.126000000000005 :confused:
 

snug

Новичок
Не могу я это вставить в свой скрипт. Просто подскажите в чём ошибка и всё. Пожалуйста.
 

snug

Новичок
Создал нового пользователя вставил всё как в запросе Делал через пхп майадмин показало 0.125 Всё чики бамбони. А в чём же прикол?
 

snug

Новичок
Да это я уже знаю, только что вычитал. Получается чтоб всё правильно работало надо их передавать в запрос как строки?
 

Вурдалак

Продвинутый новичок
Re: Помогите с mysql, не получается с типами данных DOUBLE

Автор оригинала: snug
вношу изменения и ожидаю что в ячейке будет 0.125 а там 0.252000000000003
— а ты уверен, что тут и в скрипте оперируешь именно с 5.125? Это число представимо в виде конечной двоичной дроби и проблем с ним, по-моему, быть не должно.
 

dimagolov

Новичок
Да это я уже знаю, только что вычитал. Получается чтоб всё правильно работало надо их передавать в запрос как строки?
более глупого вывода трудно придумать.

еще раз.

у тебя в поле или не точно 5.125 или в переменной не точно 5 или и то и другое одновременно. выясни (через var_dump) какие именно там значения для начала.
 

snug

Новичок
ясн. Но как я поставил в ковычки цифру которую нужно вычитать. Всё норм работает. Из этого и пошёл мой вывод. За глупость извените ... учимся ещё только)
 

Вурдалак

Продвинутый новичок
snug
Так что за хрень? Ты хочешь сказать, что у тебя 5.125 - 5 получилось равным 0.252...? Я не верю.
 

snug

Новичок
Я тоже не поверил. Скорей всего в переменную которую вычитали попал пробел на какой-то ступени передачи из одного скрипта в другой.
 
Сверху