关于perl bignum模块用法

用bignum处理大数:

对于32位的perl来说,他的整数范围被限定在32位。


perl -le "print 873498127389471892374891723489172389407128947891234"

8.73498127389472e+50

打印的结果为科学记数法显示

在命令行中输入一个较大位数的整数,显示结果与我们预想结果存在较大的偏差,精度缺失。

在perl中使用bignum模块可以解决数据精度缺失的问题。

我们来看两个例子:

对比上述结果可以看到,当加入bignum后,不再使用科学计数法显示结果,程序可以计算任意大小的数字,不管是浮点还是整数,都可以自动处理。由于底层系统对数据类型本身大小的限制,使用任意大的数字会让程序运行耗费更多的硬件资源和时间,这是追求精确结果的必然代价。

限制bignum的作用范围:

一旦启用bignum所有的数字和数学计算都会使用大数形式。因为bignum运算每次都会将数字转换成Math::BigInt或Math::BigFloat对象。这会极大地影响性能,因为所有的计算都变成了对象方法调用。

如果程序中大部分都需要用到bignum,那么小范围不用的地方可以用no bignum 指令临时关闭。同样的道理,如果我们只是想在程序的小范围内使用bignum那么可以局部开启

{

use bignum;#or no bignum;

代码块

}

如果只有某些特定的数据需要使用bignum,那么可以构建对象的方式表示大数,对象的操作方法一如既往,而对于大数的特别处理也仅仅发生在这些对象上。

弊端:

上面已经说过,当使用bignum时对于任意大数字会让程序耗费更多的硬件资源和时间。所以在使用过程中需要根据实际情况灵活的来限定bignum模块的使用。

时间: 2024-10-08 10:28:12

关于perl bignum模块用法的相关文章

操作指定文件格式的10个Perl CPAN模块

在Perl开发中,很可能会碰到一些不同格式的文件--XML.PDF.CSV及RSS文件等,和一些不同的二进制数据格式.Perl应用程序需要操作这些文件,对它们进行读写. 此时,可以求助于全面Perl档案网络(CPAN),简化文件操作工作.CPAN拥有数量庞大.用于处理不同文件格式的Perl模块.本文列出了10个这样的模块,开发人员可以使用它们对自定义文件格式进行操作. 包名 描述 DBI 此模块提供了不依赖数据库的包装,允许Perl与数据库进行通讯.它支持数据库连接和管理,支持执行查询.事务.存

查看perl的模块版本

查询版本: perl -M模块名 -e "print 模块名->VERSION" 一个例子:查看LWP模块版本(Windows操作系统下) 查看perl的模块版本,码迷,mamicode.com

perl核心模块解析(一)POSIX

perl核心模块解析(一)    POSIX 详细文档链接如下 源自:http://blog.csdn.net/jonathanxqs 转自:http://perldoc.perl.org/POSIX.html POSIX/?p?z?ks/, 是可移植操作系统接口(Portable Operating System Interface ),POSIX标准定义了操作系统应该为应用程序提供的接口标准,是IEEE为要在各种UNIX操作系统上运行的软件而定义的一系列API标准的总称,其正式称呼为IEEE

python中MySQLdb模块用法实例

篇文章主要介绍了python中MySQLdb模块用法,以实例形式详细讲述了MySQLdb模块针对MySQL数据库的各种常见操作方法,非常具有实用价值,需要的朋友可以参考下 本文实例讲述了python中MySQLdb模块用法.分享给大家供大家参考.具体用法分析如下: MySQLdb其实有点像php或asp中连接数据库的一个模式了,只是MySQLdb是针对mysql连接了接口,我们可以在python中连接MySQLdb来实现数据的各种操作. python连接mysql的方案有oursql.PyMyS

perl核心模块解析(二)List::Util

perl核心模块解析(二)    List::Util 详细文档链接如下 源自:http://blog.csdn.net/jonathanxqs 转自:http://perldoc.perl.org/List/Util.html http://www.xker.com/page/e2015/06/193925.html 在Perl中有一些专门用于处理列表数据的模块,比如说List::Util模块,该模块包含在标准库中,能提供各种高效的常见列表处理工具.因其用C语言来实现,速度一般都挺快! [例0

python datetime模块用法

python datetime模块用法 1. 创建naive(无时区信息)的datetime对象 import datetime dt_utc = datetime.datetime.utcnow() dt_utc # datetime.datetime(2019, 2, 1, 10, 53, 34, 145034) dt_utc.tzinfo # None dt_local = datetime.datetime.now() dt_local.tzinfo # None # tzinfo为No

python pillow模块用法

pillow Pillow是PIL的一个派生分支,但如今已经发展成为比PIL本身更具活力的图像处理库.pillow可以说已经取代了PIL,将其封装成python的库(pip即可安装),且支持python2和python3,目前最新版本是3.0.0. Pillow的Github主页:https://github.com/python-pillow/Pillow Pillow的文档(对应版本v3.0.0): https://pillow.readthedocs.org/en/latest/handb

Python shutil模块用法实例分析

本文主要介绍了Python shutil模块用法,结合实例形式分析了Python使用shutil模块操作文件拷贝的相关实现技巧与注意事项,需要的朋友可以参考下: shutil模块 主要作用与拷贝文件用的. 1.shutil.copyfileobj(文件1,文件2):将文件1的数据覆盖copy给文件2. 1 import shutil 2 f1 = open("1.txt",encoding="utf-8") 3 f2 = open("2.txt"

Perl List::Util模块用法详解

本文介绍Perl标准库List::Utils中的列表工具,有时候它们非常好用.比如Perl中测试列表中是否包含某个元素(某个元素是否存在于列表中)没有比较直接比较方便的功能,但使用List::Utils中的first或any函数,则非常方便且高效.此外,该模块都有对应的C代码的函数,所以它们的效率也不差. 可以将List::Utils模块中的功能大致分为3类:reduce类.key/value类以及其它类: reduce类:reduce类的函数是依次取(迭代)列表中的元素,并对这些元素做一些操作