float和[numeric]之间的区别(18,10)

时间:2009-11-19 17:55:22

标签: sql-server

sql server类型之间有什么区别:

float和[numeric](18,10)

3 个答案:

答案 0 :(得分:4)

FLOAT符合IEEE 754并近似十进制表示。

NUMERIC精确地以十进制表示(直到声明的精度)。

SELECT  CAST(PI() AS FLOAT),
        CAST(PI() AS NUMERIC(20, 18)),
        CAST(PI() AS NUMERIC(5, 3))


---------------------- --------------------------------------- ---------------------------------------
3,14159265358979       3.141592653589793100                    3.142

答案 1 :(得分:2)

numeric是十进制(基数为10)的定点数据类型; float是二进制(base-2)浮点数据类型。

数字[18,10]定义精度小数(小数点左侧和右侧可存储的最大小数位数)18和小数位数(最大小数位数)可以存储在小数点的右边)10。它将9个字节的存储空间用于浮点数的默认8个字节。

这是starting point for more reading

答案 2 :(得分:0)

floatdefined作为二进制浮点数。

在二进制计算机中使用它们比使用十进制浮点数更有效(实际上,浮点数上的大多数数学运算都是在硬件中实现的),并且可以非常精确。但是,由于精度是以位而不是小数位来衡量的,因此float不适合与依赖于数字的十进制表示的算法一起使用(例如,财务应用程序)。

一些好的参考文献是Wikipedia's page on IEEE 754(浮点标准)和David Goldberg的ACM文章What Every Computer Scientist Should Know About Floating-Point Arithmetic