Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么SQL Server会在我的回合结束时添加数字?_Sql_Sql Server - Fatal编程技术网

为什么SQL Server会在我的回合结束时添加数字?

为什么SQL Server会在我的回合结束时添加数字?,sql,sql-server,Sql,Sql Server,我使用的是SQL Server,这是我目前想要坚持的程序,这是代码 SELECT ROUND(CONVERT(DOUBLE PRECISION, SUM(lat_n)), 2), ROUND(CONVERT(DOUBLE PRECISION, SUM(long_w)),2) FROM station; 当我把它四舍五入的时候,效果很好,但是后面有浮动的零,我需要它们消失。当我尝试转换这些值时,这些就是我得到的结果- 42850.040000000001 47

我使用的是SQL Server,这是我目前想要坚持的程序,这是代码

SELECT 
    ROUND(CONVERT(DOUBLE PRECISION, SUM(lat_n)), 2),
    ROUND(CONVERT(DOUBLE PRECISION, SUM(long_w)),2) 
FROM
    station;
当我把它四舍五入的时候,效果很好,但是后面有浮动的零,我需要它们消失。当我尝试转换这些值时,这些就是我得到的结果-

  42850.040000000001   47381.480000000003

为什么要在末尾添加这些随机数,如何阻止它,以及有没有更好的方法来消除SQL Server中的浮点0?

双精度(相当于
浮点(53)
)是错误的选择

尝试
数字(18,2)
十进制(18,2)

请注意,SSMS出于显示目的对浮点类型的输出进行舍入,但它不适用于其他类型,例如在注释中提供的链接中。这可能就是你看到的不同行为


您向RDBMS声明需要浮点值,这就是您所拥有的。如果您想要精确的值,请使用精确的数据类型。(旁注,这是有效的T-SQL语法,您每天都会学到一些东西。不过,为什么要使用这种语法是另一个问题。)
双精度
相当于浮点(53)。我建议您进行一些研究,以便了解问题,例如,不要使用“奇怪的分数”。如果您研究浮点数是如何存储在二进制中的,那么小数部分的表示方式就会受到一些限制。更多信息