Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.10.31;
Скачать: CL | DM;

Вниз

Преобразование типов данных MSSQL   Найти похожие ветки 

 
Sergey-ZZZ ©   (2002-10-10 12:21) [0]

У меня в поле типа DESIMAL (9,5) лежит число 0,01. Когда я обращаюсь к этому полю и извлекаю данные
T:=ADOQuery1.Fields[0].Value;
то Т принимает значение 0,009999999767765. Т я объявил как Sengle. Пробовал я извратиться T:=ADOQuery1.Fields[0].AsFloat - тот же результат. Помогите получить тоже число которое лежит в поле. Заранее всем благодарен.


 
Johnmen ©   (2002-10-10 12:26) [1]

0,01=0,009999999767765 !
(погрешность разрядной сетки, однако...)


 
sniknik ©   (2002-10-10 15:20) [2]

Johnmen ©
подробнее pls.
у меня примерно то же было dbf в dbf переносил, причем не всегда а время от времени. решил раундом до определенного разряда (сдесь 5). вообще бред в dbf определяеш поле 16,2 а после видиш там число выходяшее за все пределы (10 знаков после запятой).
уже поздновато но все одно интересно в чем дело.


 
Johnmen ©   (2002-10-10 15:41) [3]

Меня удивляет, что с хранением в dbf тоже есть такие явления ...:)
Видимо, в более позних версиях была изменена сущность хранения float"а в dbf ... Не знаю ...
А если говорить в целом, то, как мы все знаем, любое число можно представить в двоичной сист.счисления. Так вот, попытайся разложить, например, 13.171 и увидишь, что разрядной сетки может не хватить для точного разложения...

Может коряво изложил, но суть, думаю, ясна...:)


 
sniknik ©   (2002-10-10 16:14) [4]

спасибо. суть ясна.

но я уже 5 лет в авиационном институте а до сих пок понять не могу, вот самолеты летают, а крыльями не машут, почему? :-))))

с dbf таких проблем нет (скорее всего) там же число представляется строкой. а вот с моим переносом.... , там были небольшие вычисления (целочисленные + 1,- 1, дробь не меняют) ну и деление гдето было но его потом убрал, а тип real остался и как теперь понятно совершенно зря. надо было вычисления в селекте делать а перенос AsString и не было бы проблем.


 
Johnmen ©   (2002-10-10 16:31) [5]

>sniknik © (10.10.02 16:14)
>...самолеты летают, а крыльями не машут...

Как это не машут ?! Еще как машут ! :))))
Уже где-то когда-то пояснял, что изгибные колебания крыла самолета (класса ТУ104) достигают 3 м. на конце относительно фюзеляжа...
Сам не проверял :))), но так меня учили когда-то не помню в каком курсе....


 
Sergey-ZZZ ©   (2002-10-11 09:25) [6]

Я решил свою проблему тупым умножением всех данных перед сохранением на 1000(т.к. посмотрел что больше трех знаков после запятой у меня не бывает), и храню на сервере как Integer. По извлечению - делю на 1000. Тупо, но работает. На счет 3-х метров думаю тоже ошибка с запятой. ;-)
Всем привет.



Страницы: 1 вся ветка

Текущий архив: 2002.10.31;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.018 c
3-101079
NewAl
2002-10-14 08:54
2002.10.31
DBGrid


14-101475
Лохматый
2002-10-10 11:02
2002.10.31
А нужна ли перепись?


6-101403
MVova
2002-08-29 11:10
2002.10.31
Поиск своих серверов в сети.


1-101290
dimonf
2002-10-22 16:55
2002.10.31
Как вытащить данные из документа Microsoft Word.


14-101487
Николай Быков
2002-10-11 15:46
2002.10.31
Бинарное дерево