![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проблемы с представлением чисел Float в IB 6.0 [D6, IB6.x]
Nimfa © (2005-06-12 14:50:00)При чтении данных или выводе из поляй типа Float они представляются приблизительно, т.е. если в поле записала 0.65, при просмотре таблицы оно выглядит 0.65000454534536.
Можно ли это каким нибудь образом избежать?
И желательно рациональным методом.
Megabyte (2005-06-14 01:52:00) [1]http://www.delphikingdom.com/asp/viewitem.asp?catalogid=374
Хорошая статейка. Действительно после прочтения все вопросы отпадут. ;)
Desdechado (2005-06-13 11:54:00) [2]приведи к другому типу
SELECT CAST( выражение AS тип )
highlander (2005-06-13 10:32:00) [3]У меня точно такая же проблема была, но только в таблицах Парадокса, там тип поля Numeric. В это поле записывается результат выполнения сложного запроса с агрегатами типа:
select (sum(t1.a)+sum(t2.b)-sum(t3.a))*t4.b
или что-то вроде того. Результат такой выборки естественно Float.
Как бороться с этим - еще не придумал. Может кто-то подскажет?
HSolo (2005-06-13 09:27:00) [4]http://www.delphikingdom.com/asp/viewitem.asp?catalogid=374
http://ibase.ru/devinfo/round.htm
Desdechado (2005-06-12 21:17:00) [5]дробные типы никогда не бывают абсолютно точными
их точность зависит от способа хранения (внутреннего формата)
если отдельно хранить целую часть, а отдельно дробную (в виде целой), то тогда что-то можно добиться
в некоторых системах так и делается (на внутреннем уровне) для хранения дробей
в IB можешь использовать double precision - он точнее
sniknik (2005-06-12 15:41:00) [6]> c плавающей точкой
вот именно с плавающей. (хотя правильнее наверное с ... запятой)
real тоже не точен, настолько, что это 2 разных типа в зависимости от установок...
и в любом случае,
выполни вот это
procedure TForm1.Button1Click(Sender: TObject);
var r: real;
begin
r:= 0.002;
if r = 0.002 then
ShowMessage(FloatToStr(r));
end;
скажи чего показывает? ;о)) только не врать!
еще почитай про типы с плавающей запятой (есть статьи, сделай поиск ), подумай, и может тогда наступит "просветление" ;).
Nimfa (2005-06-12 15:12:00) [7]и представляла себе этот тип не как приблизительное, а как тип 34 бита с плавающей точкой. Он что не может данные в нормальном виде представлять пользователю. Например как real в делфи.
Anatoly Podgoretsky (2005-06-12 14:57:00) [8]Так float это и есть приблизительное.
Беспечный_Ангел (2005-06-12 14:53:00) [9]Numeric?