Главная страница
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.017 c
3-101168
kserg@ukr.net
2002-10-10 12:01
2002.10.31
WinXP + ADO? = проблем


1-101335
Super
2002-10-18 20:21
2002.10.31
Кто нибудь знает адрес сайта где собрана вся библиотека RFC?


1-101265
AlexGreG
2002-10-22 07:00
2002.10.31
... ЯЗЫК ... как много в этом звуке


3-101086
ttt
2002-10-03 14:14
2002.10.31
Кодировка paradox3.5 таблицы


4-101586
SashaL
2002-09-18 11:21
2002.10.31
Ошибка: