MSDN sagt, dass der Bereich der REAL-Zahlen - 3,40E + 38 bis -1,18E - 38, 0 und 1,18E - 38 bis 3,40E + 38 ist. Anscheinend ist die wahre Untergrenze viel niedriger. Das folgende Skript füllt eine REAL-Spalte mit 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
Kann mir jemand sagen, was die tatsächlich niedrigstmögliche positive Zahl ist?
Antworten:
Der minimale positive (subnormale) Gleitkommawert mit einfacher Genauigkeit beträgt 2 - 149 ≈ 1,4 × 10 - 45 . Der minimale positive Normalwert beträgt 2 –126 ≈ 1,18 × 10 –38 ( Referenz ).
Bei doppelter Genauigkeit beträgt die minimale positive Subnormalität :
quelle