On Wednesday, 04 June, 2014 04:39 AM, Daniel Erles wrote:
> Hello.
> I have this problem:
>
> My database (Firebird) has a table with the following fields:
> ...
> rTitle DECIMAL(8,4) not null,
> rDiameter DECIMAL(10,6) not null,
> ...
>
> In my program I have a Form with a a TZTable object (ZEOS) called
> zData, bound to that table.
> In a routine I have the following code:
>
> zData.Insert;
> ...
> zData.FieldByName('rTitle').AsFloat := 0.12;
> zData.FieldByName('rDiameter').AsFloat := 0.12;
> ...
> zData.Post;
>
> Then, at the table, I see that the values are stored as follows:
>
> rTitle = *0.1199*
> rDiameter = 0.12
>
> Do not know why rTitle is 0.1199 instead of 0.12
> I need the saved values are accurate.
> I've tried AsFloat, AsCurrency, Value, always with the same result.
A suggestion: Try to alter your column from: rTitle DECIMAL(8,4) not
null *to* rTitle DECIMAL(8,2) not null.
I think the rounding occurs because you have four numbers after the
decimal point. If you need that precision, you need to input 0.1200 for
your database to store it at that exact valueI tried your case in PostgreSQL, and it store as is without the rounding problem. > > Any idea? > > Tks. > Daniel. > > > -- > _______________________________________________ > Lazarus mailing list > [email protected] > http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus
smime.p7s
Description: S/MIME Cryptographic Signature
-- _______________________________________________ Lazarus mailing list [email protected] http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus
