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