MSDN говорит, что диапазон РЕАЛЬНЫХ чисел составляет - от 3.40E + 38 до -1.18E - 38, 0 и 1.18E - от 38 до 3.40E + 38. По-видимому, истинный нижний предел намного ниже. Следующий скрипт заполняет столбец REAL значением 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
Может кто-нибудь сказать мне, что является фактическим наименьшим возможным положительным числом?
1
Там определенно странное поведение с этим типом. Наименьший скалярный литерал, который я смог разыграть и выбрать, был 1.1754944E-38, который вернулся как 1.175494E-38 (обратите внимание на отсутствующие 4 в конце) - если вы попытаетесь разыграть 1.175494E-38 напрямую, вы получите ноль обратно.
—
Джон Зигель