Вопрос о действительных числах (Delphi6)
От: Proxvost  
Дата: 11.03.03 06:02
Оценка:
Возникла следущая гадость. Имеется база данных аксесовская. доступ к ней установлен, таблица подключена и через dbgrid данные выведены значится на обработку. Странность следующая, числа которые в базе проходят под типом ординарное (или двойное) с плавающей точкой, бессовестно изменяются. Если в базе значения были следующие (1,6 ... 4,2 ну и там что либо похожее) принимают значения 1,6000000345 и т.д. Что сие за гадость и лечится ли она.


Был бы весьма признателен за помощь.

С уважением Прохвост
Re: Re: Вопрос о действительных числах (Delphi6)
От: Sinclair Россия https://github.com/evilguest/
Дата: 11.03.03 11:36
Оценка:
Здравствуйте, Proxvost, Вы писали:

P>Если в базе значения были следующие (1,6 ... 4,2 ну и там что либо похожее) принимают значения 1,6000000345 и т.д. Что сие за гадость и лечится ли она.

А как вы хотели, батенька? Арифметика-то конечной точности. См. хелп по типам дынных, где написано, сколько там знаков есть после запятой. После тех, которые гарантированы, наступает мусор.
Выходов два:
1. Округлять до приемлемого количества знаков, отдавая себе отчет в том, что ошибка накапливается
2. Использовать арифметику с фиксированной запятой (RTFM data type Numeric)
... << RSDN@Home 1.0 beta 6 >>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[2]: Re: Вопрос о действительных числах (Delphi6)
От: Proxvost  
Дата: 11.03.03 11:42
Оценка:
S>1. Округлять до приемлемого количества знаков, отдавая себе отчет в том, что ошибка накапливается
S>2. Использовать арифметику с фиксированной запятой (RTFM data type Numeric)


Хмм, я бы рад да хелпа битые у меня. Но даже если и таким путем то тогда вопрос идет следующий имеется ли такая возможность округления в dbgride или мне придется вносить данные уже преобразованные соответственно (в данном случае округленные)?

С уважением Прохвост
Re[3]: Re[3]: Re: Вопрос о действительных числах (Delphi6)
От: Sinclair Россия https://github.com/evilguest/
Дата: 11.03.03 12:29
Оценка:
Здравствуйте, Proxvost, Вы писали:
P>Хмм, я бы рад да хелпа битые у меня. Но даже если и таким путем то тогда вопрос идет следующий имеется ли такая возможность округления в dbgride или мне придется вносить данные уже преобразованные соответственно (в данном случае округленные)?
Зря хелпы побил. Зря.
Возможность окуругления встроена в сам TFloatField. Ищи проперть Precision и ставь количество знаков после запятой, кое необходимо.
Кстати, а что за данные хранятся в этих полях? Я в жизни до сих пор как-то не сталкивался с флоатами в базе, кроме одного случая, когда умные австралийцы сделали примари кей с плавающей запятой. Я плакал.
P>С уважением Прохвост
... << RSDN@Home 1.0 beta 6 >>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[4]: Re[3]: Re: Вопрос о действительных числах (Delphi6)
От: Proxvost  
Дата: 11.03.03 13:36
Оценка:
Хорошо, поэкспериментирую, а насчет хелпов, не мною прибиты, не с меня и спрос , а насчет базы, сие есть данные по ядерному распаду. сам понимашь точных целых чисел тут не будет.

С уважением Прохвост

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