我有一个生成这些值的应用程序:
[ -2.00000000e+00 -1.00000000e+00 -1.00929366e-16 1.00000000e+00]
如何将数字-1.00929366e-16
四舍五入为0
?我想要的是如果右边有一个x个零,它用零代替那个值。
答案 0 :(得分:0)
最简单的解决方案就是使用内置的数学函数
round(float)
如果十进制小数位数小于5,则返回浮点数的整数分量,如果十进制小数位数大于或等于5,则返回一个。
这应该是您需要的所有内容,而不是计算零。
*注意:由于您似乎有一个值列表,请使用
[round(each_number) for each_number in list_of_floats]
将舍入应用于每个值。
**请注意,如果您要对这些需要任何方差测量的数字应用任何数学运算,我建议您不要对它们进行舍入,因为您通常希望避免计算输出为0,比如说,标准偏差,如果您将在以后的函数中使用它(这会让我感到很头疼,并且要求我实际包含我的浮点数中的微小变化以避免以后计算中的错误。)
有关详细信息,请参阅:https://docs.python.org/3/library/functions.html#round
(Deja Vu推荐)
答案 1 :(得分:0)
如果我错了,请纠正我:你不只是想绕过价值。只有在“正确点有多个零”时才会这样做。
我们说这个数字是5.您不想围绕0.001
,但是您希望将0.000001
舍入为0.而1.000001
为1.你好,你可以做所以通过检查你的数字和最近的整数之间的距离,如下所示:
def round_special(n):
return round(n) if abs(n-round(n)) < 1e-5 else n
print round_special(0.001)
print round_special(0.0001)
print round_special(0.00001)
print round_special(0.000001)
print round_special(1.0000099)
print map(round_special, [0.001, 0.0001, 0.00001, 0.000001, 1.0000099])
哪个收益率:
0.001
0.0001
1e-05
0.0
1.0
[0.001, 0.0001, 1e-05, 0.0, 1.0]