Python全栈学习Day03 -- 基础数据类型(数值类型篇)

本文详细讲解了Python中的数值类型,包括整数、浮点数、八进制、十六进制和二进制。介绍了基础运算、数学函数、浮点数精度、真除法、地板除法以及小数位截断。此外,还涉及小数类型Decimal、分数Fraction和进制转换方法。
摘要由CSDN通过智能技术生成

Python全栈学习Day03 – 0702

数值类型

数值类型:整数、浮点数、其他数值类型(复数、分数、有理数、无理数集合、进制数等)。还有二进制、八进制、十六进制。
	类型           示例
---------------------------------------
   整数          1234, -24, 0
   浮点数        1.23, 1., .2, 3.14e-10
   八进制        0o177, 0O177
   十六进制      0x9ff, 0X9ff
   二进制        0b1010, 0B1010

二进制:当一个整数以0b或0B开头,其后都是0、1时
八进制:当一个整数以0o或0O开头(数值零和大、小写的字母o),其后都是0-7之间的数值时
十六进制:当一个整数以0x或0X开始,其后都是[0-9a-fA-F]之间的字符时

小结:
python中的浮点数精度和C语言的双精度浮点数精度相同。
python中的数值类型是不可变对象,不可变意味着不可原处修改。

数值基本运算

支持最基本的数学运算符号:+ - * / % **、取正负+x -x,地板除法//,除法和取模divmod(x, y)。实例如下:

>>> 123 + 345
468
>>> 345 - 123
222
>>> 1.5 * 4
6.0
>>> 2/5
0.4
>>> 2 % 3
2
>>> 3 ** 2
9
>>> 3.00 ** 2
9.0
>>> 3 ** 100
515377520732011331036461129765621272702107522001

>>> a = 3; b = -3
>>> -a, -b
(-3, 3)
>>> divmod(5, 2)
(2, 1)

小结:
1、除法运算/得到的结果总是浮点数。
2、当数值部分有小数时,会自动转换为浮点数类型进行运算,而且会自动忽略参与运算的小数尾部的0

其他数学运算方法

除了上面的基础算术运算符,还支持很多数值类型的运算符,例如:取反(~)、位移(>>)、位与(&)、位异或(^)、逻辑与(and)、逻辑或(or)。

除此之外,还有几个python的内置数学函数:

pow():求幂,如pow(2,3)=8
abs():求绝对值,如abs(-3)=3
round():四舍五入,如round(3.5)=4
int():取整(截去小数部分),如int(3.5)=3
float():转换成浮点数,如float(3)=3.0
oct():十进制整数转换成八进制
hex():十进制整数转换成十六进制整数
bin():十进制整数转换成二进制
......

浮点数

由于硬件的原因,使得计算机对于浮点数的处理总是不精确的。

例如,按照数学运算时,1.1-0.9=0.2,但实际得到的结果为:

>>> 1.1-0.9
0.20000000000000007

由于浮点数不精确,所以尽量不要对两个浮点数数进行等值==和不等值!=比较.如果非要比较,应该通过它们的减法求绝对值,再与一个足够小(不会影响结果)的值做不等比较。

>>> (3.2-2.8) == 0.4
False

>>> abs((3.2-2.8)-0.4) < 0.0002
True

真除数、Floor除法和小数位截断

  • /:实现的是真除法。在python中,它总是返回浮点数值。
  • //:实现的是floor地板除法,它会去掉除法运算后的小数位,以便得到小于运算结果的最大整数。如果参与运算的有小数,则返回浮点数,否则返回整数。
  • 在math模块中,有地板函数math.floor()和天花板函数math.ceil()。它们的意义可以根据现实中地板、空气、天花板的高低位置来考虑。地板位于空气之下,地板运算的返回值是比空气小的最大整数,天花板位于空气之上,天花板运算的的返回值是比空气大的最小整数
  • round(x, N)是四舍五入,可以指定四舍五入到哪个小数位
  • math.trunc()是直接截断小数
  • 实际上int()函数自身就是字节截断小数的
真除法总是返回浮点数。
>>> 9/3
3.0
>>> 10/4
2.5
>>> 10/4.0
2.5
>>> -9/2
-4.5
>>> -9/2.0
-4.5
floor除法返回浮点数还是整数取决于参与运算的数是否包含浮点数。
>>> 9 // 3
3
>>> 10 // 4
2
>>> 10 // 4.0
2.0

对于正数的运算结果,floor除法是直接去除小数位的。对于负数结果,它是取比运算结果更小的负整数。。
例如,负数结果的floor除法:
>>> -9 // 3
-3
>>> -10 // 4
-3
>>> -10 // 3
-4

除了真除法和floor除法,还有四舍五入round()和math.trunc()两种截断小数的方式。例如:
>>> round(10/4)
2
>>> round(-5.2/2)
-3

>>> import math      # import表示导入某个模块
>>> math.trunc(5/2)
2
>>> math.trunc(-5.2/2)
-2

int()也可以直接截断小数。
>>> int(3.6)
3
>>> int(-3.6)
-3

数值类型的转换

int()可以将字符串或浮点数转换成整数,也可以用于进制数转换
float()可以将字符串或整数转换成浮点数
实际上它们表示根据给定参数在内存中构造一个整数、浮点数对象,所以可以用来作为类型转换工具。而且,前面已经说过,int()可以用来截断小数位。

小数类型(Decimal)

小数模块decimal,它有一个函数Decimal(),它是精确的,是可以指定小数位数的。

如果没有python基础,这里能看懂多少算多少,反正小数用的也不多。

>>> 0.1 * 3 - 0.3
5.551115123125783e-17
它本该等于0,但结果却是无限接近于0,因为计算机硬件用于存储数值位数的空间有限。

使用decimal模块的Decimal()可以构造精确的小数。例如:
>>> import decimal
>>> decimal.Decimal('0.1') * 3 - decimal.Decimal('0.3')
Decimal('0.0')
注意,Decimal()的参数都是字符串,如果不加引号,它还是会解释成浮点数。
>>> decimal.Decimal(0.1)
Decimal('0.1000000000000000055511151231257827021181583404541015625')

分数(Fraction)

分数模块fractions,它有一个函数Fraction(),它可以构建分数。有了分数之后,可以参与运算。分数和浮点数不同,分数是精确的。

进制整数的转换

oct():十进制整数转换成八进制
hex():十进制整数转换成十六进制整数
bin():十进制整数转换成二进制
例如,将十进制的64转换成二进制、八进制、十六进制整数。

>>> bin(64),oct(64),hex(64)
('0b1000000', '0o100', '0x40')
int()函数也能进行进制转换,它的用法格式为:
int(x, base=10)

总结:数值类型篇平时用得比较多的就是地板除和常规除法以及一些内置函数,大家尽量掌握即可

大佬博客地址:https://www.cnblogs.com/f-ck-need-u/p/10133506.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值