【问题标题】:Is there a way to round very large fractions like 3.7625745528893614e-83? [closed]有没有办法舍入非常大的分数,如 3.7625745528893614e-83? [关闭]
【发布时间】:2021-01-30 00:48:58
【问题描述】:

我有大量的浮点类型(3.7625745528893614e-83)必须通过sigmoid函数:

def sigmoid_one(x):#sigmoid computation function
 return (1/(1+math.e**(-x)))

,但是通过函数传递一个很大的数字(即小数点后有很多字符的数字)后,总是得到0.5。对于解决方案,我想尝试使用 round() 函数:

round(3.7625745528893614e-83,10)

,但在计算后它给出零。有谁知道这个问题的解决方案?或许有替代 round() 函数或替代解决方案?

【问题讨论】:

  • 这不是很大的一部分。这是一个非常的数字。注意e-83,它的意思是“10 的负 83 次方”。
  • 您为什么希望四舍五入会有所帮助?
  • 这是逻辑函数的标准行为。 sigmoid_one(0) 是 0.5,您的输入几乎为零(足够接近 float 的内部舍入以消除差异)。
  • 这个问题并不重要,但你永远不应该使用math.e**(something)。请改用math.exp(something)。它更准确,也可能更快。

标签: python algorithm math rounding sigmoid


【解决方案1】:

对于小的x,函数exp(-x)1-x 大致相同,因此您的函数大约等于1/(2-x),对于小的x,函数大约等于1/2。所以你的程序运行正常。

【讨论】:

    猜你喜欢
    • 2017-02-15
    • 1970-01-01
    • 2019-01-15
    • 2011-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-19
    • 2021-10-19
    相关资源
    最近更新 更多