Float! Что с ним делать!?

J.d
Дата: 08.09.2006 10:06:14
declare @tp table (s float)
insert into @tp (s) values (3.362)
select s from @tp

----------------------
3.3620000000000001


я занимаюсь платежами за площадь в построенных зданиях и для меня вот эти вот все знаки после запятой - важны! Вчера увидел что чтото не сходится и начал копать в итоге - вышеуказанная делюга! Теперь вот гадаю что делать ((( Пожалуйста кто понимает почему sql "странно хранит" тип float отпишитесь, а то я вообще в растерянности (( Заранее спасибо!
Гавриленко Сергей Алексеевич
Дата: 08.09.2006 10:07:43
Используйте точные типы данных.
Adony
Дата: 08.09.2006 10:09:06
А вот что на эту тему говорит BOL...

float and real
Approximate number data types for use with floating point numeric data. Floating point data is approximate; not all values in the data type range can be precisely represented.
Breakneck
Дата: 08.09.2006 10:09:41
Если Вы используете приблизительные типы данных, так уж будьте любезны ознакомиться с особенностями их хранения в BOL. да и поискать по форуму - много чего найдете.
Для хранения денег нужно использовать типы money, decimal или сберкнижку.
J.d
Дата: 08.09.2006 10:12:23
Гавриленко Сергей Алексеевич
Используйте точные типы данных.


заранее прошу прощения за мои ограниченные познания в этой области, но я бы хотел уточнить что за точные типы данных? меня интересует числа вида
xxx.xx
Сергей08
Дата: 08.09.2006 10:13:44
А говоря проще: если данные храняться в двоичном формате , как Float, то не всегда будет получаться точно конвертировать их в десятичное число к которым мы почему то привыкли
J.d
Дата: 08.09.2006 10:17:26
Сергей08
А говоря проще: если данные храняться в двоичном формате , как Float, то не всегда будет получаться точно конвертировать их в десятичное число к которым мы почему то привыкли


в каком типе данных посоветуете хранить?
Гавриленко Сергей Алексеевич
Дата: 08.09.2006 10:18:43
J.d
Сергей08
А говоря проще: если данные храняться в двоичном формате , как Float, то не всегда будет получаться точно конвертировать их в десятичное число к которым мы почему то привыкли


в каком типе данных посоветуете хранить?

decimal/numeric

Вообще, в MSSQL не так уж много и типов. Можно было давно прочитать про них в BOL.
J.d
Дата: 08.09.2006 10:26:55
Гавриленко Сергей Алексеевич
J.d
Сергей08
А говоря проще: если данные храняться в двоичном формате , как Float, то не всегда будет получаться точно конвертировать их в десятичное число к которым мы почему то привыкли


в каком типе данных посоветуете хранить?

decimal/numeric

Вообще, в MSSQL не так уж много и типов. Можно было давно прочитать про них в BOL.


согласен, спасибо, разобрался! одного не пойму зачем нужны такие типы данных что в них одно записываешь а они потом другие оказываются!
Гавриленко Сергей Алексеевич
Дата: 08.09.2006 10:28:41
J.d
согласен, спасибо, разобрался! одного не пойму зачем нужны такие типы данных что в них одно записываешь а они потом другие оказываются!

Напрмер, для того, чтобы сэкономить место при хранении. Естественно, когдя точность не очень важна.