powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Проблема с MySQL (округление)!
12 сообщений из 12, страница 1 из 1
Проблема с MySQL (округление)!
    #32594811
Igor Gryb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет всем.
Я уже лет 3 юзаю MySQL
но с таким еще не встречался....
пишу запрос

Insert into t2620 (BS,VID,SUMA_MO,SUMA_SYBR, RIZ) VALUES ('26209793337101', '45', 156782.18, 156792.68, -10.50)

Но мне в поле SUMA_MO забывает 156782.19 а не 156782.18
аналогично и с другим числом !

Нужно отметить, что при маленьких числах, все нормально !!!
Что это такое ??????
...
Рейтинг: 0 / 0
Проблема с MySQL (округление)!
    #32595536
Sad Spirit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тип поля float?
...
Рейтинг: 0 / 0
Проблема с MySQL (округление)!
    #32595645
Igor Gryb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тип поля float (16,2)
...
Рейтинг: 0 / 0
Проблема с MySQL (округление)!
    #32595977
Sad Spirit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
все эти (16, 2) --- филькина грамота. во float хранятся приближённые значения, точность ограничена кол-вом байт, а не (16,2).
...
Рейтинг: 0 / 0
Проблема с MySQL (округление)!
    #32596283
User_Name
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Лучше используй поле типа Double
И к тому же неужели нужно тут 16 разрядов ??? Разве есть юзеры способные положить на вклад такую сумму
...
Рейтинг: 0 / 0
Проблема с MySQL (округление)!
    #32596342
Sad Spirit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
User_NameЛучше используй поле типа Double

надо объяснять в чём идиотизм данного совета?
...
Рейтинг: 0 / 0
Проблема с MySQL (округление)!
    #32597028
User_Name
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Sad Spirit

Попробуйте

//OffTop
По Вашим топикам на этой ветке (MySql) я понял что у Вас просто воспитания не хватает поэтому не обижаюсь :)
//End OffTop
...
Рейтинг: 0 / 0
Проблема с MySQL (округление)!
    #32597079
User_Name
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну вот не поленился полезть в доку по моему MySql 3.23 серверу и пара выдержек оттуда:

..
Note that using `FLOAT' may give you some unexpected problems as
all calculations in MySQL are done with double precision. *Note
No matching rows::.
If you are comparing `FLOAT' or `DOUBLE' columns with numbers that
have decimals, you can't use `'=''. This problem is common in most
computer languages because floating-point values are not exact
values. In most cases, changing the `FLOAT' to a `DOUBLE' will
fix this
. *Note Problems with float::.

(manual.txt)
...
Рейтинг: 0 / 0
Проблема с MySQL (округление)!
    #32597771
Sad Spirit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну, человеку, который всю МУДрость черпает из мануала мыскля, что-то объяснять бесполезно. свободен.
...
Рейтинг: 0 / 0
Проблема с MySQL (округление)!
    #32597861
User_Name
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Sad Spirit
//OffTop
Н-да вот это ответ )))) т.е. "Инструкции читают только ламеры" ((С) Если б программисты строили дома)
Обьяснения просто КЛАСС
В общем тоже свободен.
//End Offtop
...
Рейтинг: 0 / 0
Проблема с MySQL (округление)!
    #32600155
Фотография Рыжий Кот
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sad Spirit, не стоит так сразу в штыки... :)

User_Name, просто "некоторые" числа в BIN-e имеют вид бесконечной дроби.
Скажем, например попадется десятичное число xxx.5, которое при переводе DEC->BIN даст вам xxx.4999999999(9) в десятичном эквиваленте.
Ну примерно также как невозможно выразить одну треть в виде конечной десятичной дроби.
Правильно использовать не float или double, а decimal, или numeric, с указанием нужной точности.

авторIf you are comparing `FLOAT' or `DOUBLE' columns with numbers that
have decimals, you can't use `'=''. This problem is common in most
computer languages because floating-point values are not exact
values. In most cases, changing the `FLOAT' to a `DOUBLE' will
fix this .

Абсолютно верно. Попробуйте, на любом языке на любой ОС сделайте сложные вычисления через float, а потом сравните БЕЗ ОКРУГЛЕНИЯ с переменной, значение которой впишите от руки. ПолУчите False.

...
Рейтинг: 0 / 0
Проблема с MySQL (округление)!
    #32613684
bizonline
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если не хочется переходить с float на decimal например,
то можно при выводе данных использовать ROUND(x,2)
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Проблема с MySQL (округление)!
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]