MSDN表示,实数的范围是-3.40E + 38至-1.18E-38、0和1.18E-38至3.40E +38。显然,实际下限要低得多。以下脚本使用1.401298E-45填充REAL列:
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,您将得到零背部。
—
乔恩·塞格尔