Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.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 使用VB.NET或SQL Server将十进制值的整数列表与求和条件一起使用_Sql Server_Vb.net - Fatal编程技术网

Sql server 使用VB.NET或SQL Server将十进制值的整数列表与求和条件一起使用

Sql server 使用VB.NET或SQL Server将十进制值的整数列表与求和条件一起使用,sql-server,vb.net,Sql Server,Vb.net,我有一个十进制数表,它的和给出整数: ID Column1 Column2 Column3 Column4 SUM 1 1247.6 1163.0 1478.6 102.8 3992 2 501.2 203.4 205.1 155.3 1065 3 105.1 257.8 247.7 1025.4 1636 4 247.0 887.4 745.2 476.4 2356 当我对这些数

我有一个十进制数表,它的和给出整数:

ID  Column1 Column2     Column3 Column4 SUM
1   1247.6  1163.0      1478.6  102.8   3992
2   501.2   203.4       205.1   155.3   1065
3   105.1   257.8       247.7   1025.4  1636
4   247.0   887.4       745.2   476.4   2356
当我对这些数字进行四舍五入时,它们的总和会发生变化,通常会变成总和+/-1,这是因为四舍五入

ID  Column1 Column2     Column3 Column4 SUM SUMofRounded
1   1248    1163        1479    103     3992    3993
2   501      203        205     155     1065    1064
3   105      258        248    1025     1636    1636
4   247      887        745     476     2356    2355
在总和保持不变的情况下,如何将这些十进制数四舍五入为整数。我更喜欢SQL Server或VB.NET中的解决方案


谢谢

我现在明白这个问题了。您不满意的是,单独四舍五入的值之和不等于总数的四舍五入值

Round(Column1 + Column2 + Column3 + Column4, 0) <> Round(Column1, 0) + round(Column2)...

如果你关心它是如何分发的。。。然后您必须指定。

您可以使用楼层功能来实现相同的功能。大概是这样的:-

SELECT FLOOR(1247.6) = 1247

你为什么不先把这些数字加起来,然后再四舍五入呢。即使要对单个列进行舍入,也可以使用实际值来求和,然后对其实际值的总和进行舍入。如果实际值为整数,则只有和为整数,但在示例中,实际值不是整数。请参阅Brian Presserler的答案。这和我上面说的一样,可能更糟。1.4+1.4+1.4+1.4=5.6四舍五入=6。除非求和是基于整数值的,否则就没什么可做的了。第一个表中的sum列给出了sum值sum(Column1+Column2+Column3+Column4),它总是整数。数据设置为那样。这可能会产生误导。楼层函数只是截断小数部分。如果小数部分大于0.5,舍入将增加整数部分。@BrianPressler,在您的评论之后,我能够理解用户的问题。接受点。否已执行的操作是从TableNo中选择ROUND(Column1,0)+ROUND(Column2,0)+ROUND(Column3,0)+ROUND(Column4,0),值给出整数和(Column1+Column2+Column3+Column4)
SELECT FLOOR(1247.6) = 1247