float 的不确定性
Posted 神崎橙
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了float 的不确定性相关的知识,希望对你有一定的参考价值。
很多时候,大家都知道,浮点型这个东西,本身存储就是一个不确定的数值,你永远无法知道,它是 0 = 0.00000000000000123 还是 0 = 0.00000000000999这样的东西。也许一开始使用的时候没有问题,但是有时候做统计的时候,就会看出端倪
简单的举个例子,就知道统计的时候,有可能出现意外的效果,导致可能需要存储过程或者接收程序的代码左额外的取舍数位的处理,所以在此其实我是推荐使用Numeric来替代float进行一个替代使用,避免一个sum ,然后明明明细看每一条数据都是正常的2,3位小数,一汇总就变成了8,9位的样子
CREATE TABLE #T (ID INT IDENTITY,Va FLOAT) CREATE TABLE #T1 (ID INT IDENTITY,Va NUMERIC(15,9)) --分开执行------------------------------------------------- INSERT INTO #T ( Va ) VALUES ( 0.60000000) INSERT INTO #T1 ( Va ) VALUES ( 0.60000000) GO 100 SELECT SUM(Va) FROM #T SELECT SUM(Va) FROM #T1 ---------------------- 60.0000000000001 (1 行受影响) --------------------------------------- 60.000000000 (1 行受影响)
以上是关于float 的不确定性的主要内容,如果未能解决你的问题,请参考以下文章
c_cpp 这个简单的代码片段显示了如何使用有符号整数在C中完成插值。 for()循环确定要插入的范围