Python 教程(四) —— 数字

Python 教程(四) —— 数字

Python 数字分为:int(整型),float 和 Decimal(浮点型),Fractions(分数)以及 Complex(复数)

文章目录


一、整数

Int 或整数是完整的数字,正数或负数,没有小数,长度不限。

a = 12
b = -56
c = 6484613213548489

print(type(a))
print(type(b))
print(type(c))

输出:
>>> <class 'int'>
>>> <class 'int'>
>>> <class 'int'>

二、浮点数

“浮点数”是包含小数的正数或负数。同时浮点数也可以是带有“e”的科学数字,表示 10 的幂。

a = 12.63
b = -56.56
c = 6484613213548489.549849489

# 科学数字
d = 894e2

print(type(a))
print(type(b))
print(type(c))
print(type(d))

输出:
>>> <class 'float'>
>>> <class 'float'>
>>> <class 'float'>
>>> <class 'float'>

三、复数

复数用 “j” 作为虚部编写:

a = 5+6j
b = 6j
c = -6j

print(type(a))
print(type(b))
print(type(c))

输出:
<class 'complex'>
<class 'complex'>
<class 'complex'>

四、分数

Python支持分数的计算:

from fractions import Fraction

print(Fraction(5, 6))
print(Fraction(5, -6))
print(Fraction(10, 8))

print(Fraction(10, 8) + 1.2)
print(Fraction(10, 8) * 2)
print(Fraction(10, 8) / 2)


输出:
5/6
-5/6
5/4
2.45
5/2
5/8

五、Decimal 十进制浮点运算(对象不可变)

1. 自定义位数

相比较 float 浮点数的计算,Decimal 更加趋向于现实数字的计算,更加精确,通常用于对于精度要求比较高的金融以及科学计算上。

而且 Decimal 具有有效位的概念,能*决定保留位数,可以通过下面的例子来看:可以看到,decimal 可以通过 quantize 方法来限定位数。

from decimal import Decimal

a = Decimal(5.698).quantize(Decimal('.1'), rounding='ROUND_DOWN')
b = Decimal(6.23).quantize(Decimal('0.01'), rounding='ROUND_UP')

print(a)
print(b)

输出:
5.6
6.24

2. 其他数字转换为Decimal计算

(一)整数及字符串转换

普通的整数以及字符串转换直接赋值到 Decimal 构造就行。当然,整数及字符串都转换成 Decimal 以后可以直接进行数学运算.

from decimal import Decimal

a = Decimal(2)
b = Decimal('5')
c = Decimal('5.26')
e = Decimal(2 + 5)

print(a)
print(b)
print(c)
print(e)

# 数字运算
print(a + c)


输出:
2
5
5.26
7

7.26

(二)浮点数转换

浮点数的转换因为二进制转换为十进制,所以需要53位或更多位数来填充精度。在转换的时候如果有精度要求,可以直接用 quantize 方法预设精度。

from decimal import Decimal

print(Decimal(1.2))
print(Decimal(2.5))
print(Decimal.from_float(3.6))
print(Decimal(3.6).quantize(Decimal('0.001'), rounding='ROUND_DOWN'))

输出:
1.1999999999999999555910790149937383830547332763671875
2.5
3.600000000000000088817841970012523233890533447265625
3.600

(三)元组转换

元组转换成 Decimal 需要特定的格式来进行:(符号, (tuple), 精度)

名词 符号 解释
符号 01 0 表示正数,1 表示负数
tuple (1, 2, 5, 7) 中间 tuple 部分表示要拼接的内容
精度 正整数或负整数 元组最后一位开始精确到第几位(正整数是小数点向后计算n位,
负整数表示小数点向前计算n位)
from decimal import Decimal

print(Decimal((1, (1, 5, 2), 0)))
print(Decimal((1, (1, 5, 2), 1)))
print(Decimal((0, (1, 5, 2), 1)))
print(Decimal((0, (1, 5, 2, 4), -2)))

输出:
-152
-1520
1520
15.24
上一篇:查询数据占比


下一篇:mysql中float和decimal类型特点(不定时更新)