浮点数总和:意外结果

时间:2015-07-13 14:01:29

标签: python python-2.7 python-3.x digit

以下输出让我感到惊讶:

1.1 + 2.2
=> 3.3000000000000003

总和中出现了意想不到的小数字。对于其他加数也不会发生同样的情况,例如:

3.0 + 0.3
=> 3.3

我在Python 2.7和3.4中都尝试过,但结果是一样的。这笔意外结果的原因是什么?

3 个答案:

答案 0 :(得分:2)

主要是因为二进制不能很好地与十进制(2和10是互质)和浮点数的精度有限。

答案 1 :(得分:1)

最终,当它归结为它时,计算机正在使用二进制数。一些小数不能像我们想要的二进制数一样整齐。结果值包括一些遗留下来的数字垃圾。

答案 2 :(得分:1)

有关更完整的讨论,请参阅:python floating numberLimiting floats to two decimal points,但合理的解决方案可能是指定所需的精度,如:

foreach (Recipient recipient in recipients)
{
    var item = new ListViewItem(recipient.FirstName + " " + recipient.LastName);
    item.Tag = recipient;
    item.Checked = true;
    lvRicipients.Items.Add(item);
}