MSDN dice que el rango de números REALES es - 3.40E + 38 a -1.18E - 38, 0 y 1.18E - 38 a 3.40E + 38. Aparentemente, el verdadero límite inferior es mucho más bajo. El siguiente script llena una columna REAL con 1.401298E-45:
CREATE TABLE a
(
r1 REAL NULL ,
r2 REAL NULL ,
r3 REAL NULL
) ;
GO
INSERT INTO a
( r1, r2 )
VALUES ( 1.18E-37, 10 ) ;
GO
DECLARE @i INT ;
SET @i = 1 ;
WHILE @i < 20
BEGIN ;
UPDATE a
SET r1 = r1 / r2 ;
SELECT r1 ,
r2
FROM a ;
SET @i = @i + 1 ;
END ;
GO
DROP TABLE a ;
r1 r2
------------- -------------
1.18E-38 10
(snip)
r1 r2
------------- -------------
1.401298E-45 10
¿Alguien puede decirme cuál es el número positivo real más bajo posible?
Respuestas:
El valor mínimo positivo (subnormal) de punto flotante de precisión simple es 2 −149 ≈ 1.4 × 10 −45 . El valor normal mínimo positivo es 2 −126 ≈ 1.18 × 10 −38 ( referencia ).
Para doble precisión, el mínimo positivo subnormal es:
fuente