Проблем с дробни числа в Delphi - Access

В Access зададох типа на полето на "единична плаваща запетая", броят на десетичните знаци е "2". Свързвам основа към . Когато въведете дробно число (например 3.6) от Delphi, то се записва в базата данни като 3.6000000011 или нещо подобно. Ако влизаш през Access значи е нормално както си го въвел така е. Какъв е проблемът, кажете ми. Ако нещо не е ясно във въпроса, пишете, ще се опитам да го преформулирам по някакъв начин. Благодаря предварително.

tolians ( 2006-03-02 10:22 ) [2]

Не е ясно, пише: ADODB.Recordset грешка "800a0cc1"

Артикулът не може да бъде намерен в колекцията, съответстващ на заявеното име или ред.

/asp/libview.asp, ред 57

Обяснете, ако не е трудно.

Време е да започнете такава статия в килера. Заедно с търсене и получаване на идентификатор преди вмъкване ;))

Delphi няма нищо общо с това. Освен ако компонентите не са набор от данни, които по някаква причина не са били „научени“ по собствена инициатива да закръглят числа с плаваща запетая, вместо това предлагайки мистериозен DisplayFormat. В базата данни "ИТ" е написано по този начин, защото типът поле, предоставен от вас в същата "база", включва съхраняване на числото в плаваща форма. Надявам се, че нямате въпрос защо плаващият формат "обезобразява" числата?

Друго обяснение относно "В Access зададох типа на полето на "единична плаваща запетая", броят на десетичните знаци е "2". "

Точно този "брой знаци" играе ролята на своеобразен тригер в достъпа, който работи всеки път, когато полето приеме нова стойност. Закръгляването просто се прилага към числото - докато, разбира се, ирационалната дроб, ако има такава, не отива никъде от самото число. Това е първо. Второ, достъпът също използва тези две ваши, за да отреже допълнителни дробни цифри, когатопоказване във вашите мрежи или формуляри (когато преглеждате съдържанието на таблицата в самия достъп).

tolians ( 2006-03-02 10:30 ) [5]

> Да, имам такъв въпрос, но ме е страх дори да попитам. И така, какво да правя.

tolians ( 2006-03-02 10:33 ) [6]

Е, с дубъл е разбираемо, предположих.

Прочетете за формата за представяне на числа в процесорите от фамилията PC. А именно разделът, който описва подробно как да съхранявате позицията на десетичната запетая. По-специално понятията мантиса, ред, знак на реда и знак на мантиса. За предпочитане с примери. Преди около година имаше отлични уроци от Ю. Зотов - потърсете ги, има много добро за него.

tolians ( 2006-03-02 10:41 ) [8]

Определено ще го прочета. Но все пак какво да правя сега, как да го оправя.

Не е нужно да поправяте нищо. Всичко едобре. За числа с дробна част, разбира се.

Когато пишете в таблица, можете програмно да ги закръглите до желаната битова дълбочина, като по този начин намалите грешката при последващи операции с тези числа (например с "вертикално" сумиране) А при показване използвайте споменатия DisplayFormat, като изрично задавате броя на показваните десетични знаци. Например TADODataSet.FieldByName("Quontity").DisplayFormat := "0.00"

tolians (03/02/06 10:12) Ако е плаващ, тогава откъде идва 2 И ако има две, тогава откъде идва?

Достъпно: [Тип данни->Числен].[Брой десетични знаци] -> 2

> Достъпно: [Тип данни->Числен].[Брой десетични знаци] -> 2 това е същият DisplayFormat за самия достъп, той не засяга основата/формата (типа) на самото число (като цяло това не е аналогия на числовото във Fox, където колкопосочвате толкова много знаци и ще има).

за какво говоря Анатолий попита къде е посочено това ограничение в достъпа - посочих

tolians ( 2006-03-05 11:11 ) [16]

Благодаря на всички много.