SQL Server中的奇怪减法行为:1-1 = 2.22044604925031E-16

时间:2017-01-20 20:31:45

标签: sql sql-server sql-server-2008

我有一个数据集,其中每一行都会收到三个类别之一的%分配。我想添加一个“未分类”类别,它只考虑在三个提供的类别之间未分配的剩余%。

类别A,B和C都是数据类型float。

SELECT

[Category A],
[Category B],
[Category C],
[Category A]+[Category B]+[Category C] [CatTotal],
1-([Category A]+[Category B]+[Category C]) [Unclassified]

FROM Dataset

产量

<table>
  <tr>
    <th>Category A</th>
    <th>Category B</th>
    <th>Category C</th>
    <th>Category Total</th>
    <th>Unclassified (1-Category Total)</th>
  </tr>
  <tr>
    <td align = 'center'>0</td>
    <td align = 'center'>0.333333333333333</td>
    <td align = 'center'>0.666666666666667</td>
    <td align = 'center'>1</td>
    <td align = 'center'>2.22044604925031E-16</td>
  </tr>
</table>

奇怪的是,如果我在临时表中重新创建类别A,B和C的确切值,也存储为float,那么运行相同的代码,我得到0如预期的那样。这里发生了什么?

0 个答案:

没有答案