Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 有没有办法将非常大的分数(如3.7625745528893614e-83)四舍五入?_Python_Algorithm_Math_Rounding_Sigmoid - Fatal编程技术网

Python 有没有办法将非常大的分数(如3.7625745528893614e-83)四舍五入?

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

我有大量类型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):#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(某物)
。它更准确,也可能更快。