0

我有一个基本电阻值列表

BaseRes=[1.0,1.1,1.2,1.3,1.5,1.6,1.8,2.0,2.2,2.4,2.7,3.0,3.3,3.6,3.9,4.3,4.7,5.1,5.6,6.2,6.8,7.5,8.2,9.1]

然后我想制作一个包含这些基值和这些值乘以 10 的列表:

Resistors = BaseRes
Resistors = Resistors+[res*10 for res in BaseRes]

输出:

Resistors
[1.0, 1.1, 1.2, 1.3, 1.5, 1.6, 1.8, 2.0, 2.2, 2.4, 2.7, 3.0, 3.3, 3.6, 3.9, 4.3, 4.7, 5.1, 5.6, 6.2, 6.8, 7.5, 8.2, 9.1, 10.0, 11.0, 12.0, 13.0, 15.0, 16.0, 18.0, 20.0, 22.0, 24.0, 27.0, 30.0, 33.0, 36.0, 39.0, 43.0, 47.0, 51.0, 56.0, 62.0, 68.0, 75.0, 82.0, 91.0]

正如你所看到的,这对我来说很好。但是,当我想添加基极电阻值乘以 100 的列表时,我会得到一些奇数值:

Resistors = Resistors+[res*100 for res in BaseRes]

输出:

 Resistors
[1.0, 1.1, 1.2, 1.3, 1.5, 1.6, 1.8, 2.0, 2.2, 2.4, 2.7, 3.0, 3.3, 3.6, 3.9, 4.3, 4.7, 5.1, 5.6, 6.2, 6.8, 7.5, 8.2, 9.1, 10.0, 11.0, 12.0, 13.0, 15.0, 16.0, 18.0, 20.0, 22.0, 24.0, 27.0, 30.0, 33.0, 36.0, 39.0, 43.0, 47.0, 51.0, 56.0, 62.0, 68.0, 75.0, 82.0, 91.0, 100.0, 110.00000000000001, 120.0, 130.0, 150.0, 160.0, 180.0, 200.0, 220.00000000000003, 240.0, 270.0, 300.0, 330.0, 360.0, 390.0, 430.0, 470.0, 509.99999999999994, 560.0, 620.0, 680.0, 750.0, 819.9999999999999, 910.0]

主要是110值、220值、510值和820值让我很困惑。

我不明白这里发生了什么。

任何帮助将不胜感激

4

2 回答 2

3

虽然您确实看到的是浮点表示中的舍入错误,但您可能在这里寻求修复。我推荐Python 的decimal模块,它旨在处理需要精确的人类数学而不是快速二进制近似的情况。

from decimal import *
getcontext().prec = 3
resBase = [Decimal(x) for x in [1.0, 1.1, 1.2, 1.3, 1.5, 1.6, 1.8, 
    2.0, 2.2, 2.4, 2.7, 3.0, 3.3, 3.6, 3.9, 4.3, 4.7, 5.1, 5.6, 
    6.2, 6.8, 7.5, 8.2, 9.1]]
print [res * 100 for res in resBase]

输出:

[Decimal('100'), Decimal('110'), Decimal('120'), Decimal('130'), Decimal('150'), 
Decimal('160'), Decimal('180'), Decimal('200'), Decimal('220'), Decimal('240'), 
Decimal('270'), Decimal('300'), Decimal('330'), Decimal('360'), Decimal('390'), 
Decimal('430'), Decimal('470'), Decimal('510'), Decimal('560'), Decimal('620'), 
Decimal('680'), Decimal('750'), Decimal('820'), Decimal('910')]
于 2013-10-21T02:00:15.230 回答
0

正如其他人指出的那样,这是一个浮点问题。不过,您可能想知道如何解决它。

尝试类似:

import math
Resistors = Resistors+[math.floor(res*100) for res in BaseRes]

我建议阅读Python 数学包的文档以获取更多信息和一些可以真正提供帮助的有用函数。快乐编码!

于 2013-10-21T01:44:14.897 回答