当前位置: 首页 > 面试题库 >

Python中对数不正确

施凡
2023-03-14
问题内容

我每天在公司使用Python 2.4。我使用了标准数学库中的对数函数’log’,当我输入log(2 **
31,2)时,它返回31.000000000000004,这让我感到有些奇怪。

我用2的其他幂做同样的事情,并且效果很好。我跑了’log10(2 ** 31)/ log10(2)’,我得到了31.0的回合

我尝试在Python 3.0.1中运行相同的原始函数,假设它已在更高级的版本中修复。

为什么会这样?Python中的数学函数是否可能存在一些错误?


问题答案:

这在计算机算法中是可以预期的。它遵循特定的规则,例如IEEE
754
,可能与您在学校学到的数学不符。

如果这 确实很 重要,请使用Python的十进制类型。

例:

from decimal import Decimal, Context
ctx = Context(prec=20)
two = Decimal(2)
ctx.divide(ctx.power(two, Decimal(31)).ln(ctx), two.ln(ctx))


 类似资料:
  • 问题内容: 我期望的是0.313而不是0.312,为什么会这样呢?还有其他方法可以用来获得0.313吗? 谢谢 问题答案: Python 3使用舍入到偶数方法根据IEEE 754标准进行舍入。 如果您想采用另一种方式取整,则只需手动实施即可: 用法示例: 注意: 在python2中,舍入总是远离零,而在python3中,它舍入为偶数。(例如,请参见功能文档中的2.7和3.3之间的区别)。

  • 我试图使用python将列表转换为数据帧。我有我的列表(正确的数据)中所有必要的数据,以词典列表的形式。请参阅下面的词典列表: 我使用以下命令将其转换为数据帧。 数据框不再将字典键作为列标题,而是将数字0-8作为列标题,并在字典值应该在的地方循环打印列名。这是我得到的数据帧输出: 产生这种输出的原因是什么?我该如何纠正?任何帮助都将不胜感激。

  • 假设我有一个数据帧,如下所示: 我想在时间分组一个重复的数据,并应用不同的函数到和(例如,求和和计算卷加权平均值)...我知道我能做到 将重复索引分组,然后使用或函数获取第一行或最后一行,但这并不是我真正想要的。 是否有方法对不同列中的值进行分组,然后应用不同的(由我编写的)函数?

  • 问题内容: 以上失败,并出现AttributeError异常。我了解Python在调用时不保证 “全局变量”(在这种情况下是否存在成员数据)的存在。如果是这种情况,并且这是导致异常的原因,那么如何确保对象正确销毁? 问题答案: 我建议使用Python的语句来管理需要清理的资源。使用显式语句的问题在于,你必须担心人们会忘记完全调用它,或者忘记将其放在块中以防止发生异常时发生资源泄漏。 要使用该语句,

  • 问题内容: 我在MySQL中以浮动形式输入“ 35444650.00”,并且将格式重新设置为35444648.00,欢迎任何帮助… 问题答案: 浮点数仅具有一定的精度,您可能会超出浮点数据类型的精度。尝试改为使用DOUBLE。

  • 为什么数学模块返回错误的结果? 结果 在这里,结果是正确的。 结果 这里的结果是不正确的。 为什么会这样呢?