我终于钻入python math lib source code,发现了这一点:

/* A decent logarithm is easy to compute even for huge ints, but libm can't

do that by itself -- loghelper can. func is log or log10, and name is

"log" or "log10". Note that overflow of the result isn't possible: an int

can contain no more than INT_MAX * SHIFT bits, so has value certainly less

than 2**(2**64 * 2**16) == 2**2**80, and log2 of that is 2**80, which is

small enough to fit in an IEEE single. log and log10 are even smaller.

However, intermediate overflow is possible for an int if the number of bits

in that int is larger than PY_SSIZE_T_MAX. */

static PyObject*

loghelper(PyObject* arg, double (*func)(double), const char *funcname)

{

/* If it is int, do it ourselves. */

if (PyLong_Check(arg)) {

double x, result;

Py_ssize_t e;

...

我会保留其余的源代码(检查链接),但是据我了解,Python会检查传递的参数是否为整数,如果是,则不要使用math lib(如果为int,自己做.)评论.另外:即使对于很大的整数,也很容易计算出不错的对数,但是libm本身不能做到这一点-loghelper可以

如果是双精度数,则调用本地数学库.

从源注释中可以看出,即使发生溢出,Python也会尽最大努力提供结果(此处转换为两次溢出,但仍可以计算日志.清除异常并继续)

因此,由于使用了log函数的python包装,Python能够计算巨大整数的对数(特定于某些函数,因为sqrt等其他函数无法做到),并且已在文档中进行了记载,但仅在源代码中有记录.正如Jon所暗示的那样,使其成为实现细节.

为什么在python中整数的值没有限制_python-为什么math.log接受大整数值?相关推荐

  1. 为什么在python中整数的值没有限制_为什么在Python中整数是不可变的?

    在Python中,使数字不可变的设计决策是什么? 不变性有几个原因,让我们先看看不变性的原因是什么? 1-内存节省内存.如果众所周知一个对象是不可变的,那么可以很容易地复制它,为同一个对象创建一个新的 ...

  2. python中元组的值可变吗_python中对象的可变与不可变

    在python中一切皆对象,对象是对数据的抽象. 所有对象有三个要素:类型.标识.值.类型决定对象可以支持哪些操作:标识指的是对象的内存地址,每个对象有唯一的地址,通过id内建函数可以求出地址:值从字 ...

  3. python中求和公式是什么函数_Python的math库中,用于求和的函数是( )。

    [单选题]确定兴利库容 V 兴 ,已知某水库为一回运用水库,其一次蓄水量为 V 1 =300 万 m 3 ,一次供水量为 V 2 =150 万 m 3 . [ ]. [单选题]hAB大于0说明B点的高 ...

  4. python中可用于布尔测试的,如何在Python中使用布尔值?

    Python中的布尔值是整数的子类.布尔构造函数- bool .bool类继承自int类. issubclass(bool,int) // will return True isinstance(Tr ...

  5. python中能够处理的最大整数是_实例讲解Python中整数的最大值输出

    在Python中可以存储很大的值,如下面的Python示例程序: x = 10000000000000000000000000000000000000000000; x = x + 1 print ( ...

  6. Python中整数移位及二进制串操作

    Python中整数移位及二进制串操作 最近一个项目涉及到电压数据的接收和可视化处理.其中电压数据是由FPGA通过TCP协议传输的二进制流,软件接收端需要安装数据帧格式进行解析后处理.由于嵌入式组的FP ...

  7. python求三个整数最大值_实例讲解Python中整数的最大值输出

    实例讲解Python中整数的最大值输出 在Python中可以存储很大的值,如下面的Python示例程序: x = 1000000000000000000000000000000000000000000 ...

  8. Python中字典取值常用的方法!

    字典是Python中比较常见的数据类型之一,它是一种可变容器模型,可以存储任意数量的任意类型的数据,而且字典中的每个元素由一个键和一个值组成,键和值之间用冒号分隔.本文为大家介绍一下Python中字典 ...

  9. 10.2:Python中的布尔值是什么?

    Python是一种简单易学.功能强大的高级编程语言,它已经成为了许多领域的重要工具.在Python中,布尔值True和False是非常重要的数据类型,它们在实际应用中发挥着重要的作用.深入学习Pyth ...

最新文章

  1. CVPR2019:无人驾驶3D目标检测论文点评
  2. 架构的“一小步”,业务的一大步
  3. H5学习从0到1-H5的基本标签(2)
  4. custom configuration DB and creation logic
  5. 十年探索,云上明灯,re:Invent再启掀产业风暴
  6. AJAX异步检查,检查用户名是否存在
  7. Ubuntu 12.10安装配置JDK7环境
  8. git-bisect last updated in 2.19.1【转】
  9. API和Web API(1)
  10. 阿里内部刊物首次公开——《智慧之巅:DT时代的商业革命》出版
  11. GD32VF103学习笔记(1)
  12. 质量值体系 Phred33 和 Phred 64 的由来 及其在质量控制中的实际影响
  13. ARM926EJ-S/ARM920T 协处理器 CP14, CP15详解(转载)
  14. 太阳时角、太阳高度角、天顶角、太阳方位角和剖面角计算的Python程序
  15. 集合竞价如何买入_教你几招!什么是集合竞价?散户如何参与集合竞价?
  16. 大牛云集!清华大学2019年姚班及智班第一届AI本科生名单公布!
  17. Apache Doris在京东广告的应用
  18. Kaldi的关键词搜索(Keyword Search,KWS)
  19. 系统设计开发模式思考
  20. java面试项目中遇到难题,大量教程

热门文章

  1. java 资源锁定_如何在Java中创建时正确锁定资源
  2. 华为nova4是不是鸿蒙系统,华为nova 4手机什么时候可以升级鸿蒙系统?鸿蒙系统nova4升级时间介绍...
  3. java jvm目录,JVM(Java虚拟机)中过程工作目录讲解
  4. 最新进展 | 深度学习在天气预测中的应用
  5. 解开玻尔兹曼机的封印会发生什么?
  6. 互联网热门职位薪酬报告
  7. 会议交流 | DataFunSummit 知识图谱在线峰会——链接知识图谱最前沿技术和最落地产业化应用的桥梁!...
  8. 征稿 | ​第 9 届国际语义技术联合会议征稿(截稿日 9 月 8 号)
  9. Python-接口开发入门
  10. Android官方开发文档Training系列课程中文版:网络操作之网络管理