MSDN nói rằng phạm vi của các số REAL là - 3,40E + 38 đến -1,18E - 38, 0 và 1,18E - 38 đến 3,40E + 38. Rõ ràng giới hạn dưới thực sự thấp hơn nhiều. Kịch bản sau đây điền vào cột REAL với 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
Bất cứ ai có thể cho tôi biết số dương thực tế thấp nhất có thể là gì?
1
Chắc chắn có một số hành vi kỳ lạ với loại này. Chữ vô hướng nhỏ nhất mà tôi có thể sử dụng và chọn là 1.1754944E-38, trở lại là 1.175494E-38 (lưu ý số 4 bị thiếu ở cuối) - nếu bạn cố gắng truyền trực tiếp 1.175494E-38, bạn sẽ nhận được số không trở lại.
—
Jon Seigel