Round()不起作用

时间:2018-02-22 06:59:24

标签: python arrays numpy rounding

D1_inv
Out[23]: [0.024799999999999999, 0.029600000000000001, 0.035799999999999998]

我试图将这些数字四舍五入到小数点后4位。我用过这个:

for i in D1_inv:
    round(i,4)

但输出仍与上述相同。有人可以帮助我吗?

4 个答案:

答案 0 :(得分:2)

您的问题是列表理解的完美案例:

class FooA {
    private String s1;
    private String s2;

  // other fields 

    @JsonUnwrapped
    private FooB fooB;

//getter setter

}

答案 1 :(得分:2)

D1_inv = [0.024799999999999999, 0.029600000000000001, 0.035799999999999998]

for i in D1_inv:
    print round(float(i), 4)

输出:

0.0248
0.0296
0.0358
[Finished in 0.0s]

答案 2 :(得分:2)

您所看到的是浮点错误。通常,在数学上不可能在基数2(即float)中精确地表示基数为10的小数,因此您的计算机尽可能接近。但是如果您的输出样式设置为显示许多小数位,那么这些"错误"会出现。

round没有帮助,因为它的输出仍为float。你无法以任何简单的方式解决这个问题,因为它是二进制数学的假象。一些选项是:

  • 使用frac
  • 将小数转换为分数
  • 使用.format修复输出的显示精度(但这会使它们成为字符串)
  • 修复interpeter的显示精度(这是特定于解释器的操作)。

答案 3 :(得分:0)

您没有保存结果。

db_incrbckp_date