SQLServer如何将0.2表示为FLOAT

时间:2013-06-18 09:34:26

标签: sql-server floating-point computer-science floating-accuracy

DECLARE @f as float

SELECT @f = 0.2

SELECT @f

上面的代码返回

----------------------
0.2

(1 row(s) affected)

那里不足为奇。 Except that floating-point cannot represent 0.2 exactly.

那么SQLServer在这做什么?它是否使用基数为10的浮点数?我理解它总是处理基数2中的浮点(因为基数10的浮点基本上是DECIMAL?)。

它正在进行一些舍入吗?

1 个答案:

答案 0 :(得分:1)

float is accurate to 15 significant figures因此0.2通常会显示为0.2

链接中提到的技术可以缓解(但可能不会消除)像这样的值的精度损失

但是数字越大,精度就越低

DECLARE @f as float

SELECT @f = 0.1234567890123456E0
SELECT @f

SELECT @f = 1.000000000000023E0
SELECT @f