Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2002.10.31;
Скачать: [xml.tar.bz2];

Вниз

Преобразование типов данных 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.009 c
1-101374
3asys
2002-10-21 12:04
2002.10.31
Моделирование design-time в run-time


3-101100
БД Ламер
2002-10-09 16:24
2002.10.31
Я никогда не создавал БД. Помогите!


14-101522
Volly
2002-10-11 14:16
2002.10.31
Как зарегистрировать программу?


14-101508
DeepProg
2002-10-12 15:11
2002.10.31
I NEED Samples


3-101050
Mister-D
2002-10-08 12:48
2002.10.31
Графическое представление химических формул





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский