Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   otro BUG en interbase 6 (https://www.clubdelphi.com/foros/showthread.php?t=63975)

BlueSteel 11-03-2009 15:33:25

otro BUG en interbase 6
 
Holas...

hace tiempo que no me encontraba con errores en Interbase 6 :eek::mad:(es un sistema que realice hace un par de años....)

el punto es que estaba ingresando unos items de una Orden de Compra y cuando ingresaba algunos valores me los cambia por otros.... tube que realizar varias modificaciones manuales para poder cuadrar la orden... todo un lio...

en fin, los valores con problemas son los sgtes:

93262548 -> lo cambiar por -> 93262544
93262549 -> lo cambia por -> 93262552
54548865 -> lo cambiar por -> 54548864
37063683 -> lo cambiar por -> 37063684

los campos en cuestion estan definidos como float

pues ni modo....

Salu2:p:D

Casimiro Noteví 11-03-2009 16:57:54

Cita:

Empezado por BlueSteel (Mensaje 340967)
[..]los campos en cuestion estan definidos como float[..]

Yo siempre uso campos double.

BlueSteel 11-03-2009 23:20:30

Cita:

Empezado por Casimiro Notevi (Mensaje 340995)
Yo siempre uso campos double.

mmm... no he probado dicho valor con un campo double..... pero el problema fue que no se permitian un numero intermedio... y los aproxima a uno superior o inferior segun corresponda....

es para quedar plop....:eek::eek::eek:

Casimiro Noteví 12-03-2009 02:21:46

Código:

Create TABLE TBPRUEBAS (
    ID          INTEGER NOT NULL,
    CAMPOFLOAT  FLOAT,
    CAMPODOUBLE  DOUBLE PRECISION,
    PRIMARY KEY (ID)
);

commit work;

insert into tbpruebas values (1,93262548,93262548);
insert into tbpruebas values (2,93262549,93262549);
insert into tbpruebas values (3,54548865,54548865);
insert into tbpruebas values (4,37063683,37063683);
commit work;

Código:

SQL> select * from tbpruebas;

          ID    CAMPOFLOAT            CAMPODOUBLE
============ ============== =======================

          1      93262544.      93262548.00000000
          2      93262552.      93262549.00000000
          3      54548864.      54548865.00000000
          4      37063684.      37063683.00000000

Como ves, el campo double guarda perfectamente el valor indicado.

Del libro de Helen Borrie (The Firebird Book: A reference for Database Developers):
Cita:

FLOAT
FLOAT is a 32-bit floating-point data type with a limit of approximately 7 digits of
precision (assume 6 digits for reliability. A 10-digit number 25.33333312 inserted into
a FLOAT column is stored as 25.33333. The range is from -3.402*10^38 to 3.402*10^38
The smallest positive number it can store is 1.175*10^-38

DOUBLE PRECISION
DOUBLE PRECISION is a 64-bit floating-point data type with a limit of approximately
15 digits of precision. The range is from -1.797*10^308 to 1.797*10^308. The small-
est positive number it can store is 2.225*10^-308



La franja horaria es GMT +2. Ahora son las 14:33:13.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi