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

Вниз

Проблемы с представлением чисел Float в IB 6.0   Найти похожие ветки 

 
Nimfa ©   (2005-06-12 14:50) [0]

При чтении данных или выводе из поляй типа Float они представляются приблизительно, т.е. если в поле записала 0.65, при просмотре таблицы оно выглядит 0.65000454534536.
Можно ли это каким нибудь образом избежать?
И желательно рациональным методом.


 
Беспечный_Ангел ©   (2005-06-12 14:53) [1]

Numeric?


 
Anatoly Podgoretsky ©   (2005-06-12 14:57) [2]

Так float это и есть приблизительное.


 
Nimfa ©   (2005-06-12 15:12) [3]

и представляла себе этот тип не как приблизительное, а как тип 34 бита с плавающей точкой. Он что не может данные в нормальном виде представлять пользователю. Например как real в делфи.


 
sniknik ©   (2005-06-12 15:41) [4]

> c плавающей точкой
вот именно с плавающей. (хотя правильнее наверное с ... запятой)
real тоже не точен, настолько, что это 2 разных типа в зависимости от установок...

и в любом случае,  
выполни вот это

procedure TForm1.Button1Click(Sender: TObject);
var r: real;
begin
 r:= 0.002;
 if r = 0.002 then
   ShowMessage(FloatToStr(r));
end;

скажи чего показывает? ;о)) только не врать!
еще почитай про типы с плавающей запятой (есть статьи, сделай поиск ), подумай, и может тогда наступит "просветление" ;).


 
Desdechado ©   (2005-06-12 21:17) [5]

дробные типы никогда не бывают абсолютно точными
их точность зависит от способа хранения (внутреннего формата)
если отдельно хранить целую часть, а отдельно дробную (в виде целой), то тогда что-то можно добиться
в некоторых системах так и делается (на внутреннем уровне) для хранения дробей
в IB можешь использовать double precision - он точнее


 
HSolo ©   (2005-06-13 09:27) [6]

http://www.delphikingdom.com/asp/viewitem.asp?catalogid=374
http://ibase.ru/devinfo/round.htm


 
highlander ©   (2005-06-13 10:32) [7]

У меня точно такая же проблема была, но только в таблицах Парадокса, там тип поля Numeric. В это поле записывается результат выполнения сложного запроса с агрегатами типа:
select (sum(t1.a)+sum(t2.b)-sum(t3.a))*t4.b
или что-то вроде того. Результат такой выборки естественно Float.
Как бороться с этим - еще не придумал. Может кто-то подскажет?


 
Desdechado ©   (2005-06-13 11:54) [8]

приведи к другому типу
SELECT CAST( выражение AS тип )


 
Megabyte ©   (2005-06-14 01:52) [9]

http://www.delphikingdom.com/asp/viewitem.asp?catalogid=374
Хорошая статейка. Действительно после прочтения все вопросы отпадут. ;)



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

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

Наверх




Память: 0.48 MB
Время: 0.024 c
14-1120065309
Магнум
2005-06-29 21:15
2005.07.25
WebMoney


14-1120272492
Инстэлл
2005-07-02 06:48
2005.07.25
Можно ли поставить Delphi 2005 архитект, имея только первый диск?


4-1117208153
nes
2005-05-27 19:35
2005.07.25
windows.GetAsyncKeyState(vKey)


14-1119987504
AG.Smit
2005-06-28 23:38
2005.07.25
Bluetooth, SP2 и WIDCOMM


3-1118734195
Lexa
2005-06-14 11:29
2005.07.25
Переход к другой таблице