MySQL округляет FLOAT-значения

AXP

Новичок
MySQL округляет FLOAT-значения

Всем добрый день! Вот проблемка такая:

Есть 2 таблицы в MySQL:

1. LS. Таблица, в которой хранятся значение состояния счета для каждого клиента. Т е код клиента - сумма на счету. По строчке на клиента:
PHP:
CREATE TABLE `ls` (`kod_kl` varchar(100) NOT NULL default '', `summa` float NOT NULL default '0',  PRIMARY KEY  (`kod_kl`),
  KEY `kod_kl` (`kod_kl`)) TYPE=MyISAM;
2. SCHET. Эта таблица содержит все истории операций с личными счетами всех клиентов - код клиента, сумма операции (положительная, если начисление на счет или отрицательная при снятии), дата операции, краткое описание:
PHP:
CREATE TABLE `schet` (`prioritet` bigint(20) NOT NULL auto_increment,`kod_kl` varchar(100) NOT NULL default '',`data` varchar(100) NOT NULL default '',`opis` text NOT NULL,`summa` float NOT NULL default '0',PRIMARY KEY  (`prioritet`),KEY `prioritet` (`prioritet`),KEY `kod_kl` (`kod_kl`)) TYPE=MyISAM AUTO_INCREMENT=143429;
Соотв, если сделать запрос
PHP:
"SELECT SUM FROM schet WHERE kod_kl = 'kod123'"
, то можно получить общую сумму на счету клиента. Для того, чтобы при каждом запросе суммы клиента не производились лишние рассчеты, четкое знаечние суммы хранится в таблице LS.

Собссно проблема - если я делаю, к примеру, запрос
PHP:
"UPDATE ls SET summa = '10.34953" WHERE kod_kl = 'kod123'"
а потом запрос:
PHP:
"SELECT summa FROM ls WHERE kod_kl = 'kod123'"
то в результе я получаю сумму: 10.35.

Вот такое округление =(

Причем в таблице schet округления нету а в ls есть!

округление делается не четко до двух знаков, а как придется - т е есть значения, округленные и до 6го знака, а есть и до второго.

В общем это очень большая проблема - скажите, как с этим бороться?

Да, разница этих таблиц в том, что schet сздравалась руками через консоль, а ls уже через phpMyAdmin

Заранее огромное спасибо за помощь!
 

AXP

Новичок
decimal? в смысле указать точно сколько где знаков?
Мне бы понять, почему округляет FLOAT без указания кол-ва знаков и как от того избавиться...
 

AXP

Новичок
А без четкого указания, сколько знаков после запятой?
И не могли бы вы объяснить, почему в таблице schet такого округления не происходит?
 

Фанат

oncle terrible
Команда форума
А без четкого указания, сколько знаков после запятой?
я правильно понимаю, что речь идет о счете?
то есть, о рублях с копейками?
ты не знаешь, сколько разрядов надо указывать для копеек?
И не могли бы вы объяснить, почему в таблице schet такого округления не происходит?
долго объяснять.
если так интересно - в поиск.
что такое числа с плавающей запятой, и как с ними работает компьютер, здесь объясняют реуклярно, раз в месяц.
 

AXP

Новичок
понятно. Да, речь о счете, но не в рублях а в неких УЕ, которым не важно, сколько знаков после запятой, так как начислдение может идти и деститысячными.

В общем пока создал DECIMAL 99,10 ( ;) ), потом возможно с FLOAT разберусь - интересно всетаки.

Спасибо за помощь!
 

Фанат

oncle terrible
Команда форума
AXP
к чему этот смайлик? он показывает, что ты написал 99,10 просто в шутку? или что ты поставил именно эти значения, но сам понимаешь, что сделал глупость?
 
Сверху