Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: не всегда работает оператор between на типе float ?

Сообщения:  [1-10]   [11-11] 

 
 автор: cheops   (10.04.2007 в 12:44)   письмо автору
 
   для: Trianon   (10.04.2007 в 09:41)
 

А NUMERIC в MySQL полный синоним DECIMAL... В MySQL действительно ничего лучше DECIMAL нет, да в принципе и не нужно наверное...

   
 
 автор: Trianon   (10.04.2007 в 09:41)   письмо автору
 
   для: cheops   (10.04.2007 в 00:17)
 

С mssql перепутал. Значит не MONEY, а NUMERIC

   
 
 автор: cheops   (10.04.2007 в 00:17)   письмо автору
 
   для: Trianon   (09.04.2007 в 21:39)
 

>Еще существует тип MONEY
В MySQL его нет, здесь всегда при помощи DECIMAL с деньгами приходиться работать.

   
 
 автор: Trianon   (09.04.2007 в 21:39)   письмо автору
 
   для: mike_z   (09.04.2007 в 21:25)
 

Возможно это оптимальный вариант.
Еще существует тип MONEY

   
 
 автор: mike_z   (09.04.2007 в 21:25)   письмо автору
 
   для: Trianon   (09.04.2007 в 15:08)
 

Спасибо, чтобы не менять код перевел все данные на decimal

   
 
 автор: Trianon   (09.04.2007 в 15:08)   письмо автору
 
   для: mike_z   (09.04.2007 в 14:14)
 

Число 0.07 представляется приближенно просто всилу того, что дробь 7/100 точно в двоичной системе не записать.
Точно также Вы не представите точно 0.7, хотя тут, казалось бы, всего один знак.



http://www.mysql.ru/docs/man/Problems_with_float.html

   
 
 автор: mike_z   (09.04.2007 в 14:57)   письмо автору
 
   для: mike_z   (09.04.2007 в 14:43)
 

http://www.mysql.ru/docs/man/No_matching_rows.html

   
 
 автор: mike_z   (09.04.2007 в 14:43)   письмо автору
 
   для: mike_z   (09.04.2007 в 14:14)
 

Хотя судя по этой статье
http://dev.mysql.com/doc/refman/5.0/en/precision-math-examples.html
например, 0.0001 сложенное 10000 раз само с собой будет = 0.99999999999991 вместо единицы.

   
 
 автор: mike_z   (09.04.2007 в 14:14)   письмо автору
 
   для: Trianon   (08.04.2007 в 19:16)
 

Тогда mysql это один из немногих софтов (возможно единственный) выдающих данную ошибку.
В этом случае все компы оказались бы давно на помойке (если бы влияло округление).
Дестичные цифры представляются в виде целого числа и мантиссы и на такой разрядности для такой мелкой цифры ни о каком округлении и речи быть не может.

   
 
 автор: Trianon   (08.04.2007 в 19:16)   письмо автору
 
   для: mike_z   (08.04.2007 в 17:52)
 

Числа с плавающей точкой хранятся в двоичной системе счисления.
Десятичное число 0.07 в двоичной системе представимо лишь приближенно. Вы столкнулись с ошибкой округления.

   

Сообщения:  [1-10]   [11-11] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования