一、math模块

math库是Python提供的内置数学函数库,支持整数和浮点数运算。

常用函数和属性如下图所示:

函数/属性

说明

math.pi

圆周率

math.inf

正无穷大

math.ceil(浮点数)

向上取整

math.floor(浮点数)

向下取整

round(浮点数)

四舍五入操作

abs(数值)

获取数值的绝对值

math.fmod(x,y)

返回x/y的余数

math.pow(底数,幂)

返回一个数值的N次方

math.sqrt(数值)

开平方

fsum(序列)

返回序列中所有元素的和,返回值:浮点数

sum(序列)


将一个序列的数值进行相加求和

math.trunc(浮点数)

返回浮点数的整数部分

math.factorial(x)

返回x的阶乘

代码实例如下:

import math

# 圆周率
print(math.pi)
# 向上取整
print(math.ceil(3.2))
# 向下取整
print(math.floor(3.2))
# 四舍五入操作
print(round(3.6))
# 获取数值的绝对值
print(abs(-3.2))
# 返回x/y的余数
print(math.fmod(3, 2))
# 返回一个数值的N次方
print(math.pow(2, 3))
# 开平方
print(math.sqrt(4))
# 将一个序列的数值进行相加求和
print(sum([1, 2, 3, 4]))
# 返回浮点数的整数部分
print(math.trunc(3.4))
# 返回x的阶乘
print(math.factorial(3))

输出:

3.141592653589793
4
3
4
3.2
1.0
8.0
2.0
10
3
6

二、decimal模块

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

1.为什么使用decimal?因为python小数相加可能由于科学精度问题计算出的结果不正确。

Python入门系列21-数学相关模块(math/decimal)_math

2.使用decimal。设置精度decimal.getcontext().prec=num (num表示有效数值个数)

import decimal

# 设置精度为3位数值
decimal.getcontext().prec = 3
print(decimal.Decimal(2.01) + decimal.Decimal(3.01))

# 设置精度为2位数值
decimal.getcontext().prec = 2
print(decimal.Decimal(2.01) + decimal.Decimal(3.01))

输出:

5.02
5.0

设置小数位数:quantize()

import decimal

# 设置3位小数
print(decimal.Decimal(1.23456789).quantize(decimal.Decimal('0.000')))

# 设置2位小数
print(decimal.Decimal(1.23456789).quantize(decimal.Decimal('0.00')))

输出:

1.235
1.23