MSDNによると、REAL番号の範囲は-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を直接キャストしようとすると、ゼロになりますバック。
—
Jon Seigel