Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.026 c
4-1117117815
Геннадий
2005-05-26 18:30
2005.07.25
Как создать окно с фиксированными размерами клиентской части?


3-1118820940
d_oleg
2005-06-15 11:35
2005.07.25
TClientDataSet - параметры полей


6-1113417617
Sup
2005-04-13 22:40
2005.07.25
проблема с сокетами


14-1120022374
Иксик
2005-06-29 09:19
2005.07.25
Киев-Симферополь поездом


10-1097854855
ALex17
2004-10-15 19:40
2005.07.25
поиск




   Наверх