Возникла следущая гадость. Имеется база данных аксесовская. доступ к ней установлен, таблица подключена и через dbgrid данные выведены значится на обработку. Странность следующая, числа которые в базе проходят под типом ординарное (или двойное) с плавающей точкой, бессовестно изменяются. Если в базе значения были следующие (1,6 ... 4,2 ну и там что либо похожее) принимают значения 1,6000000345 и т.д. Что сие за гадость и лечится ли она.
Был бы весьма признателен за помощь.
С уважением Прохвост
Здравствуйте, Proxvost, Вы писали:
P>Если в базе значения были следующие (1,6 ... 4,2 ну и там что либо похожее) принимают значения 1,6000000345 и т.д. Что сие за гадость и лечится ли она.
А как вы хотели, батенька? Арифметика-то конечной точности. См. хелп по типам дынных, где написано, сколько там знаков есть после запятой. После тех, которые гарантированы, наступает мусор.
Выходов два:
1. Округлять до приемлемого количества знаков, отдавая себе отчет в том, что ошибка накапливается
2. Использовать арифметику с фиксированной запятой (RTFM data type Numeric)
... << RSDN@Home 1.0 beta 6 >>
Здравствуйте, Proxvost, Вы писали:
P>Хмм, я бы рад да хелпа битые у меня. Но даже если и таким путем то тогда вопрос идет следующий имеется ли такая возможность округления в dbgride или мне придется вносить данные уже преобразованные соответственно (в данном случае округленные)?
Зря хелпы побил. Зря.
Возможность окуругления встроена в сам TFloatField. Ищи проперть Precision и ставь количество знаков после запятой, кое необходимо.
Кстати, а что за данные хранятся в этих полях? Я в жизни до сих пор как-то не сталкивался с флоатами в базе, кроме одного случая, когда умные австралийцы сделали примари кей с плавающей запятой. Я плакал.
P>С уважением Прохвост... << RSDN@Home 1.0 beta 6 >>
Хорошо, поэкспериментирую, а насчет хелпов, не мною прибиты, не с меня и спрос

, а насчет базы, сие есть данные по ядерному распаду. сам понимашь точных целых чисел тут не будет.
С уважением Прохвост
P.S. Меня в общем то смутило больше то что он данные в гриде выводит непорядочно (не по человечески), все данные сводит к числу с определенным знаком после запятой. Ни плавающей записи ни обрезки нулей как это было в самой базе. а поскольку описание отсутствует вот и приходится добывать инфу окружными путями.