P9~P10 数字类型

1、python存在误差:

>>> 0.1 + 0.2
0.30000000000000004
>>> i = 0
>>> while i < 1:
	i = i + 0.1
	print(i)

	
0.1
0.2
0.30000000000000004
0.4
0.5
0.6
0.7
0.7999999999999999
0.8999999999999999
0.9999999999999999
1.0999999999999999

于是导致一个问题

>>> 0.3 == 0.1 + 0.2
False
>>> 0.3 < 0.1 + 0.2
True

绝对不可以!!!!!

【解决方法】借助“decimal模块”,然后使用“decimal”的“Decimal”来实例化一个对象【类和对象(后面会讲)】

如此,可以实现精度要求:

>>> import decimal
>>> a = decimal.Decimal('0.1')
>>> b = decimal.Decimal('0.2')
>>> print(a + b)
0.3

        或者

>>> import decimal
>>> a = decimal.Decimal('0.1')
>>> b = decimal.Decimal('0.2')
>>> c = decimal.Decimal('0.3')
>>> a + b == c
True

2、python使用 “ E计数 ” ,即科学计数法

示例:

>>> 0.000005
5e-06 

【 5e-06 】=【5×10**(-5)】

3、复数(以浮点数的形式存放)

示例:

>>> 1 + 2j 
(1+2j) 

可以通过“.real”获取实部值,
可以通过“.imag”获取实部值:

示例:

>>> x = 1 + 2j
>>> x.real
1.0
>>> x.imag
2.0


4、数字运算(BIF函数)


 (1)x // y 地板除__向取整

>>> 3 / 2
1.5
>>> 3 // 2
1

【不合理之处】

>>> -3 // 2
-2

(2)x % y __取余

>>> 3 % 2
1
>>> 6 % 2
0

【总结】  X == (x // y) * y + (x % y)


(3)故,有【divmod(x,y)】 操作(内置函数)__同时输出除数和余数(除数,余数)

>>> divmod(3,2)
(1, 1)
>>> divmod(-3,2)
(-2, 1)


(4)abs(x)__取绝对值
                         __如果是复数,输出为模)

>>> x = -520
>>> abs(x)
520

>>> z = 3 +4j
>>> abs(z)
5.0

(5)int(x)  __字符串→整数

                    __浮点数→保留整数部分(不是四舍五入)

>>> int("5")
5
>>> int(1.314)
1

错误:

>>> int("5.21")

Traceback (most recent call last): 
  File "<pyshell#76>", line 1, in <module>
    int("5.21")
ValueError: invalid literal for int() with base 10: '5.21'


(6)float(x)  __转为浮点数,可解决如上【错误:

>>> float("5.21")
5.21
>>> float("520")
520.0
>>> float("+1E6")
1000000.0

(7)complex(re, im)  __取复数的实部和虚部

>>> complex("1+2j")
(1+2j)
>>> complex(1,2)
(1+2j)
>>> complex(1,2j)
(-1+0j)

 注意: 此处不可以用空格“ ”

>>> complex("1 + 2j")

 Traceback (most recent call last):
  File "<pyshell#97>", line 1, in <module>
    complex("1 + 2j")
ValueError: complex() arg is a malformed string


(8)pow(x,y)  __x的y次方
(9)  x**y        __x的y次方

>>> pow(2, 3)
8
>>> 2 ** 3
8
>>> pow(2, -3)
0.125
>>> 2 ** -3
0.125

输入三个参数,可进行取余运算:

>>> pow(2, 3, 5)
3
>>> 2 ** 3 % 5
3

 

 

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值