简述
python 有三种不同的数字类型:整数、浮点数、复数。
整数
小数
- 小数由于存放标准按照 IEEE754 标准,存在误差,所以在python中,会发现 0.3 != 0.2+0.1:
print(0.3 == 0.2+0.1)
print(0.2+0.1)
打印结果: 
如何使得 0.3 = 0.2+0.1 ? 引入 decimal
import decimal
a = decimal.Decimal("0.1")
b = decimal.Decimal("0.2")
print("a+b=",a+b)
print(a+b == 0.3)
打印结果为什么还是 false?: 
打印 a+b 的数字类型以及 0.3 的数字类型:
print(type(a+b))
print(type(0.3))
打印结果:  发现一个是 decimal 类型 (a+b),一个是 float 类型 (0.3)
所以我们要把 0.3 也转换成 decimal 类型或者把 decimal 类型转换成 float ? 尝试一:把 decimal 类型转换成 float :
c = float(a+b)
print(type(c))
print(type(0.3))
print(c==0.3)
成功:  尝试二:把 0.3 转换成 decimal:
c = decimal.Decimal("0.3")
print(c==a+b)
成功: 
复数
复数格式: a+bj 其中 a 称为实部,b 称为虚部。
x = 1+2j
print(x.real)
print(x.imag)
结果: 
数值计算
符号 | 运算 |
---|
// | 取比目标结果小的最大整数 | % | 取余 | divmod(a,b) | 返回 (a//b, a%b) | abs(a) | 返回 a 的绝对值,取复数的摸 | int(a) | 取 a 的整数部分 | complex() | 转化为复数 | pow(a,b) | 计算 a 的 b 次方 | a ** b | 计算 a 的 b 次方 | pow(a,b,c) | a^b%c |
范例:
print(3//2)
print(3%2)
print(abs(-2))
print(abs(1+2j))
print(int(5.9))
print(complex("1+2j"))
print(2 ** 3)
print(pow(2,3))
print(pow(2,3,5))

|