舍入小数点后两位

时间:2017-09-25 14:04:50

标签: python numpy

In [86]: array.std()
Out[86]: 100.70953143681199

In [87]: array.std().round()
Out[87]: 101.0

In [88]: array.std().round(2)
Out[88]: 100.70999999999999

In [89]: array.std().round(decimals=2)
Out[89]: 100.70999999999999

In [90]: np.round(array.std(), decimals=2)
Out[90]: 100.70999999999999

我希望标准偏差为小数点后两位,但到目前为止它还没有工作。我该怎么办呢?如何使其适用于numpy

2 个答案:

答案 0 :(得分:1)

Python有一个名为round()的内置函数;但为了得到你想要的,你想要将std转换为浮动。像std_dev = round(float(array.std()), 2)这样的东西应该可以满足您的需求。

答案 1 :(得分:1)

Numpy正在对您显示的案例中的数字进行正确舍入,但是当数字显示在屏幕上时,您会看到floating point precision的结果。如果这种精度损失确实会给您带来麻烦,那么您应该考虑使用decimal包。

import decimal
s = decimal.Decimal(100.70953143681199)
s = round(s, 2)
print(s)
# 100.71