使得一些垃圾差异的总值如何在sql中获得准确的值?

时间:2014-03-14 21:13:03

标签: sql-server tsql sql-server-2012

Speed   A   b       c                        Total
129     11  4   2.75                         354.75
91       9  6   1.5                          136.5
166     19  8   2.375                        395.08
164     26  12  2.16666666666667             355.88
146     11  6   1.83333333333333             267.18
147     16  8   2                            294
201     8   3   2.66666666666667             536.67
164     4   2   2                            328
186     8   6   1.33333333333333             247.38
165     7   4   1.75                         288.75
171    10   4   2.5                          427.5
104    5    4   1.25                         130
1834  134   67  2                            3668

Iam使用total = Speed * c 但是,如果我为最后一列1834添加所有值,则值不会相等。我的安培数减少了100个。

2 个答案:

答案 0 :(得分:0)

第一个:

Total = Speed * c,这个关于你的输出的表达式我想是用逗号后面的第二个数字四舍五入。

第二个:

您已在最后一行中输入2作为c的值。为什么?这是以前所有行的平均值?

所以,如果你采取最后一个和第二个,那么你就会知道你与最后一行和其他行有所不同

答案 1 :(得分:0)

Approximate-number data types for use with floating point numeric data. 
Floating point data is approximate; therefore, not all values in the data
type range can be represented exactly.

Float具有默认的15位精度。因此,当您的号码有更多数字时,它将使其余数字四舍五入。

您显示的总数只有2位小数。你可以考虑永久地将c改为十进制(20,14)。如果将其转换为十进制,则结果如下:这应该更精确:

select cast(c as decimal(20, 14)) * speed as Total
from table