Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




MySQL.RU - Webboard



Вернуться
непонятки с double (lamka) 06/01/2010 - 21:02:43
      Re: непонятки с double (lamka) 06/01/2010 - 21:08:02
      Re: непонятки с double (bac) 06/01/2010 - 22:53:00
      Re: непонятки с double (lamka) 06/01/2010 - 23:04:33
      Re: непонятки с double (bac) 06/01/2010 - 23:48:03
      Re: непонятки с double (lamka) 07/01/2010 - 00:55:49

> Original message text:
> From: lamka - 06/01/2010 - 21:02:43
> Subject:непонятки с double
> -----------------
> Доброго! Есть таблица
>
> CREATE TABLE `table1` (
> `id` int(10) unsigned NOT NULL auto_increment,
> `money` float(22,4) NOT NULL default '0.0000',
> `credit` double(22,4) NOT NULL default '0.0000'
> ) ENGINE=MyISAM DEFAULT CHARSET=cp1251
>
> В поле money значение -306.1955. Задача: в поле credit записать значение равное значению поля money. Делаем:
>
> UPDATE table1 SET credit=ABS(money)
>
> Далее проверяем:
>
> SELECT money+credit from table1
>
> и получем:
>
> -5.6843418860808e-14
>
> Внимание вопрос! Что за хрень и как побороть?
>
>
>


From: lamka - 07/01/2010 - 00:55:49
Subject:непонятки с double
-----------------
1. попробуйте сначала UPDATE table1 SET money=-306.19550001 или что-то в этом роде. Ту величину, которую я указал вначале, показывает mysql клиент в соответствии с характеристиками поля (double(22,4)), а на самом деле там может быть -306,1955000123456789.
2. переходить на пятерку тяжеловато, т.к. придется перелопачивать весь софт с запросами, а его за несколько лет немало было понаписано.

Придется, похоже, сменить поля на decimal, хоть и в угоду точности расчетов. Всем спасибо.


[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
36627



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |