当前位置: 首页 > 知识库问答 >
问题:

Math.exp(2)与Math.e**2[重复]之间的差异

孟正志
2023-03-14

在编程时,我注意到math.exp(2)和math.e**2的结果之间存在差异。如下所示,在计算e^1时不会出现这种差异。

我不是一个有经验的程序员,我想知道为什么这不一样?我想这和围捕有关。python文档说math.exp(x)返回e**x,但这似乎并不完全正确。那么为什么Math.exp(x)操作与Math.e**x不同呢?

>>> math.exp(1)
2.718281828459045
>>> math.e**1
2.718281828459045
>>> math.exp(1)==math.e**1
True
>>> math.exp(2)
7.38905609893065
>>> math.e**2
7.3890560989306495
>>> math.exp(2)==math.e**2
False
>>> math.exp(100)
2.6881171418161356e+43
>>> math.e**100
2.6881171418161212e+43
>>> math.exp(100)==math.e**100
False

共有1个答案

公冶泰
2023-03-14

它是不同的,因为功能的实现不同。由于浮点的性质,两者都不是完美的。

**运算符是在floatobject.C中实现的,它包含许多特殊情况,但是这里没有调用这些特殊情况,因此它最终达到了标准的CPOW函数。math.pow函数最终执行相同的操作。

exp函数是用mathmodule.C中的宏定义的同名C函数的直接包装器。

2.718281828459045 09079559829...
2.718281828459045 23536028747...
 类似资料:
  • 在python中解决我使用https://www.spoj.com/problems/APM问题 此代码被拒绝, 但对于这一点: 接受,我的问题是为什么int((n1)/2)给出不同的ans,那么(n1)//2在大数n时

  • 我注意到以下代码在netbeans中是完全合法的: 然而eclipse对此并不满意,我必须这样初始化它: 有趣的是netbean建议不要在初始化部分指定类型参数,而是使用菱形运算符??我想知道这两种方法之间的区别。以及应该使用哪一种,这样代码就可以在不同的IDE中使用而不会有任何变化。

  • 我只需要为time1和time2设置相同的时间,然后返回到timestamp并像这样计算...但我不确定做这件事最好的方法是什么。

  • 我想知道更多处理数组的numpy。我发现a[:,None]和a[:,]之间是不同的。我想深入研究何时何地使用它们。 我试图以特殊的方式解决从2d数组中减去1d的问题,就像numpy-subtract-add-1d-array-from-2d-array一样,我意识到a[:,None]和a[:,]是不同的。 有人能给我关于它的官方或具体参考吗?我真的会很感激你的!

  • 我们正计划使用liquibase来维护一些参考数据(dataset少于20k行)。数据将在QC环境中更新和验证,我们希望使用LiquiBase将更改转移到prod。 我使用带有difftypes=data的generateChangeLog

  • 发送表单数据时使用命令名称和模型属性有什么区别? 和 我应该在哪个时间点使用它们中的任何一个?