python模块:数字处理

http:// blog.csdn.net/pipisorry/article/details/37055183

python数字处理简介

数字类型

python没有unsighed int:The Python int is an abstraction of an integer value, not a direct access to a fixed-byte-size integer.

不过int还是当成sighed int处理的?如0b10000取反~0b10000是-0b10001,虽然前面是用负号表示的,但是和c语言取反后的值是一样一样的,只是表示的很奇怪。

python不同的进制

二进制    0b101,
     以数字0和字母b打头的表示二进制数 如果出现大于等于2的数 会抛出SyntaxError异常,
八进制    0711,
     以数字0打头的数字表示八进制数 如果出现大于等于8的数 会抛出SyntaxError异常,
十进制    123,
     正常显示 不能出现字母,
十六进制  0x15,
     以数字0和字幕x打头的表示十六进制数 可以出现0-9和abcdef或ABCDEF出现其他数值会抛出SyntaxError异常,
在交互式解释器环境中.python会自动的将不同的进制自动转换为十进制,进行运算.,
     >>> 0b101 + 0711 + 123 + 0x15,
     606,

不同的进制之间可以运用内置函数进行转换

     int(str, base)      ==> int,
     bin(num)            ==> str,
     oct(num)            ==> str,
     hex(num)           ==> str,
int(str, base) 可以讲字符串转换为整型数,base为相应的进制,
base的范围是2~32 还可以为0,当base=0时,会自动尝试合适的进制,
base如果不给,缺省情况下会吧字符串向10进制转换,,
这时如果字符串中有字母则会抛出ValueError异常,
     >>> bin(5),
     '0b101',
     >>> int('0x210', 0),
     528,
     >>> int('0x210', 16),
     528,

python最大数

最大整数

Python的正整数类型所支持的最大整数。

python的最大整数:sys.maxsize (py3)   sys.maxint    (py2)[py3中无定义]

usually 2**31 - 1(2147483647) on a 32-bit platform and 2**63 - 1 (=9223372036854775807) on a64-bit platform

最小整数:-sys.maxsize-1      -2**63 (=-9223372036854775808) on 64位系统

最大浮点数

sys.float_info:
>>> import sys
>>> sys.float_info
sys.floatinfo(max=1.7976931348623157e+308, max_exp=1024, max_10_exp=308, min=2.2
250738585072014e-308, min_exp=-1021, min_10_exp=-307, dig=15, mant_dig=53, epsil
on=2.2204460492503131e-16, radix=2, rounds=1)

>>> sys.float_info.max
1.7976931348623157e+308

如果这还不够大,总是有正无穷大:
>>> infinity = float("inf")
>>> infinity
inf
>>> infinity / 10000
inf
该long类型有无限的精度,所以只受限于你的内存大小。

[maximum float in python]

[python精度问题]

一般定义的epsilon

epsilon=pow(e,-6)或者1.0e-6
皮皮blog



python数字处理模块主要有math模块、decimal模块、random模块等。

python数学运算和转换内置函数

[ python函数: 内置函数]

math模块

>>> import math
>>>dir(math)          #这句可查看所有函数名列表
>>>help(math)         #查看具体定义及函数0原型

math模块定义了两个常量

e = 2.718281828459045
pi = 3.141592653589793

math模块常用函数

ceil(x) 取顶
floor(x) 取底
fabs(x) 取绝对值
factorial (x) 阶乘
hypot(x,y)  sqrt(x*x+y*y)
pow(x,y) x的y次方
sqrt(x) 开平方
log(x)
log10(x)
trunc(x)  截断取整数部分
isnan (x)  判断是否NaN(not a number)
degree (x) 弧度转角度
radians(x) 角度转弧度
皮皮blog

 

decimal模块

decimal模块简介

默认地,浮点数学缺乏精确性。
decimal 模块提供了一个 Decimal 数据类型用于浮点数计算。相比内置的二进制浮点数实现 float这个类型有助于金融应用和其它需要精确十进制表达的场合,控制精度,控制舍入以适应法律或者规定要求,确保十进制数位精度,或者用户希望计算结果与手算相符的场合。Decimal 重现了手工的数学运算,这就确保了二进制浮点数无法精确保有的数据精度。 高精度使 Decimal 可以执行二进制浮点数无法进行的模运算和等值测试。

直接使用float导致的错误示例

a = '39.89245'
b = float(a) * 10000
print(b)
print(int(b))
398924.49999999994
398924

decimal模块使用

>>> from decimal import Decimal
>>> Decimal('0.1') / Decimal('0.3')
Decimal('0.3333333333333333333333333333')
>>> from decimal import getcontext
>>> getcontext().prec = 4 #设置全局精度
>>> Decimal('0.1') / Decimal('0.3')
Decimal('0.3333')  
from decimal import Decimal
a = '39.89245'
b = Decimal(a) * 10000
print(b)
print(int(b))
398924.50000
398924
from decimal import Decimal

_ = lambda x: Decimal(str(x))
print(0.1 + 0.1 + 0.1 - 0.3)
print(_(0.1) + _(0.1) + _(0.1) + _(-0.3))

fractions分数类型

构造
>>> from fractions import Fraction
>>> Fraction(16, -10)  #分子分母
Fraction(-8, 5)
>>> Fraction(123)   #分子
Fraction(123, 1)
>>> Fraction('3/7')   #字符串分数
Fraction(3, 7)
>>> Fraction('-.125')  #字符串浮点数
Fraction(-1, 8)
>>> Fraction(2.25)  #浮点数
Fraction(9, 4)
>>> from decimal import Decimal
>>> Fraction(Decimal('1.1')) #Decimal
Fraction(11, 10)
计算
>>> from fractions import Fraction
>>> a = Fraction(1,2)
>>> a
Fraction(1, 2)
>>> b = Fraction('1/3')
>>> b
Fraction(1, 3)
>>> a + b
Fraction(5, 6)
>>> a - b
Fraction(1, 6)
但是decimal也解决不了这个问题:
print(Decimal(0.1)**Decimal(3.0))
001000000000000000166533453694
from: python模块:数字处理_lambda x:decimal(str(x['value']))_-柚子皮-的博客-CSDN博客
ref:
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值