Python 有没有办法将非常大的分数(如3.7625745528893614e-83)四舍五入?
我有大量类型float(3.7625745528893614e-83),必须通过sigmoid函数:Python 有没有办法将非常大的分数(如3.7625745528893614e-83)四舍五入?,python,algorithm,math,rounding,sigmoid,Python,Algorithm,Math,Rounding,Sigmoid,我有大量类型float(3.7625745528893614e-83),必须通过sigmoid函数: def sigmoid_one(x):#sigmoid computation function return (1/(1+math.e**(-x))) round(3.7625745528893614e-83,10) ,但通过函数传递一个大数字(即小数点后有许多字符的数字)后,始终会得到0.5。对于解决方案,我想尝试round()函数: def sigmoid_one(x):#sigmo
def sigmoid_one(x):#sigmoid computation function
return (1/(1+math.e**(-x)))
round(3.7625745528893614e-83,10)
,但通过函数传递一个大数字(即小数点后有许多字符的数字)后,始终会得到0.5。对于解决方案,我想尝试round()函数:
def sigmoid_one(x):#sigmoid computation function
return (1/(1+math.e**(-x)))
round(3.7625745528893614e-83,10)
,但经过计算,结果为零。有人知道这个问题的解决办法吗?可能有一个round()函数的替代品或替代方案?对于小型
x
,函数exp(-x)
与1-x
大致相同,因此您的函数大约等于1/(2-x)
,对于小型x
而言,函数大约等于1/2
。因此,您的程序运行正常。这并不是一个很大的分数。这是一个非常小的数字。注意e-83
,意思是“负83的幂乘以10”。为什么您希望四舍五入有帮助?这是逻辑函数的标准行为sigmoid_one(0)
为0.5,您的输入几乎为零(足够接近float
的内部四舍五入以消除差异)。这与此问题无关,但您永远不要使用math.e**(某物)
。改用math.exp(某物)
。它更准确,也可能更快。