FLOAT:浮点数值数据的大致数值数据类型
FLOAT类型的官方描述:
用于表示浮点数值数据的大致数值数据类型。浮点数据为近似值;因此,并非数据类型范围内的所有值都能精确地表示。
上面已经告诉我们了一句话,就是不要太相信它喔。
TSQL提供了一个专门的代表实数的数据类型。事实上它提供了两种实数类型:REAL和FLOAT,不过这些数据类型和SQLSERVER的其他数据类型(其中一些类型据称是精确的类型)都不是严格数学意义上的实数系统。
数字的计算机表示对算数运算来说不是真实的,虽然它们可以满足大多数需求,但不能为所有问题提供“正确的答案”。
下面举例说明:
Real类型的不真实性:
这个不符合乘法的结合律a(bc)=(ab)c,但是对于SQLSever中实数和运算的表示,这两个式子则不相等,SQLServer在这一点上并没有任何错误,这样的结果符合浮点运算的重要IEEE标准。
Float类型的不真实性:
12.055进位应该是12.06结果却为12.05
另外的还补充一点,就是.NET中的Math.Round()这个函数默认的是采用银行家算法,这个函数还有哥带有枚举值的参数,这个参数可以指定使用哪种四舍五入的方法(其中包括传统的四舍五入的方法和采用银行家算法的四舍五入的方法)
如果使用 money 或 numeric 数据类型,那么,内部转换为 float 可能会降低精度。
所以在进行精确财务计算时,请尽量少使用float和real这样的数字类型,虽然这两种数据类型速度要快。
————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/lulei6/article/details/106686626/