我有以下列表
alist = [0.141, 0.29, 0.585, 0.547, 0.233]
我找到累计总和
np.cumsum(alist)
array([ 0.141, 0.431, 1.016, 1.563, 1.796])
当我将此数组转换为列表时,会显示一些小数值。我怎样才能避免这些小数?
list(np.cumsum(alist))
[0.14099999999999999,
0.43099999999999994,
1.016,
1.5630000000000002,
1.7960000000000003]
这可能是重复的,但我找不到答案。
答案 0 :(得分:2)
了解浮点数不存储在十进制基数格式中非常重要。
因此,您必须清楚为什么要删除"额外的小数位数"你看到了:
如果答案是(1),则使用np.round
。
如果答案是(2),那么使用python' decimal
模块。
下面的示例演示了np.round
不更改浮动的基础表示。
import numpy as np
alist = [0.141, 0.29, 0.585, 0.547, 0.233]
lst = np.round(np.cumsum(alist), decimals=3)
print(lst)
# [ 0.141 0.431 1.016 1.563 1.796]
np.set_printoptions(precision=20)
print(lst)
# [ 0.14099999999999998646 0.43099999999999999423 1.01600000000000001421
# 1.56299999999999994493 1.79600000000000004086]
np.set_printoptions(precision=3)
print(lst)
# [ 0.141 0.431 1.016 1.563 1.796]