Skip to main content
 首页 » 编程设计

python之如何获得 [-2.3,-2.2,...] 的列表

2025年05月04日14Renyi-Fan

我想在 Python 中获取一个数字列表,例如 [-2.3,-2.2,...,0.2]。然而,尝试:

[float(i)/10 for i in range(-23,2)]  

将返回 [-2.2999999999999998, -2.2000000000000002, -2.1000000000000001, -2.0, -1.8999999999999999, -1.8, -1.7, -1.6000000000000059,9, -19, -1. 9999, -1.3, -1.2, -1.1000000000000001, -1.0 , -0.90000000000000002, -0.80000000000000004, -0.69999999999999996, -0.59999999999999998, -0.5, -0.40000000000000002, -0.2999999999999 000000001, -0.10000000000000001, 0.0]

我该如何解决这个问题?

圆形不起作用:

>>> round(float(-23)/float(10),3) 
-2.2999999999999998 

它用于最终写入 CSV 或通过 main 方法传递给另一种语言。

请您参考如下方法:

请不要混淆某些东西在打印时应该是什么样子和它应该代表什么值。

打印从来都不是问题:

>>> ['{0:.1f}'.format(float(i)/10) for i in range(-23,3)] 
['-2.3', '-2.2', '-2.1', '-2.0', '-1.9', '-1.8', '-1.7', '-1.6', '-1.5', '-1.4', '-1.3', '-1.2', '-1.1', '-1.0', '-0.9', '-0.8', '-0.7', '-0.6', '-0.5', '-0.4', '-0.3', '-0.2', '-0.1', '0.0', '0.1', '0.2'] 

但这些是字符串,因为这是它们的打印表示。当你在做计算时,你需要不精确的 float 表示;正如@mitnk 指出的那样;正如@6502 所解释的那样。

您还可以使用 decimal module它提供了更人性化的 float 表示。