zoukankan      html  css  js  c++  java
  • 类型1

    本节重点

    1.学员了解整形、布尔型、浮点型以及复数型之间的定义与联系

    2.学员掌握数字类型的基本运算方法

    3.学员能熟练掌握数字常用操作

    布尔型

    bool型只有两个值:True和False

    之所以将bool值归类为数字,是因为我们也习惯用1表示True,0表示False。

    整型

    Python中的整数属于int类型,默认用十进制表示,此外也支持二进制,八进制,十六进制表示方式。

    进制转换

    尽管计算机只认识二进制,但是为了迎合我们的习惯,python中的数字默认还是十进制。还提供了一些方法来帮助我们做转换。比如是进制转换为二进制使用bin方法,在转换结果前面还会加上‘0b’表示是一个二进制书。

    既然十进制可以转换为二进制,那么其实使用同样的原理也可以转换为其他进制,python也为我们提供了十进制转换成八进制和十六进制的方法,分别是oct和hex。八进制前面以‘0o’标示,十六进制以‘0x’标示

    >>> bin(10)
    '0b1010'
    >>> oct(10)
    '0o12'
    >>> hex(10)
    '0xa'
    

    取余运算(%)

    >>> 5%2
    1
    >>> 16%4
    0
    >>> 16%7
    2
    

    算术运算(+ - * / // divmod **)

    >>> 2+3
    5
    >>> 2-3
    -1
    >>> 2*3
    6
    >>> 3/2
    1.5
    >>> 3//2
    1
    >>> divmod(16,3)
    (5, 1)
    >>> 2**3
    8
    

    浮点型

    浮点数是属于有理数中某特定子集的数的数字表示,在计算机中用以近似表示任意某个实数。具体的说,这个实数由一个整数定点数(即尾数)乘以某个基数(计算机中通常是2)的整数次幂得到,这种表示方法类似于基数为10的科学计数法

    好了,我们来解释上面那句装。。。的话:

    Python的浮点数就是数学中的小数(alex一定要强调float是有限小数或无限循环小数,就好像谁真的关心似的)。

    在运算中,整数与浮点数运算的结果也是一个浮点数。

    为什么要叫做float浮点型?

    浮点数也就是小数,之所以称为浮点数,是因为按照科学记数法表示时,
    一个浮点数的小数点位置是可变的,比如,
    1.23*109和12.3*108是相等的。
    浮点数可以用数学写法,如1.23,3.14,-9.01,等等。但是对于很大或很小的浮点数,就必须用科学计数法表示,把10用e替代:
    1.23*109就是1.23e9,或者12.3e8,0.000012可以写成1.2e-5,等等。
    整数和浮点数在计算机内部存储的方式是不同的,整数运算永远是精确的而浮点数运算则可能会有四舍五入的误差。
    

    关于小数不精准问题

    Python默认的是17位精度,也就是小数点后16位,尽管有16位,但是这个精确度却是越往后越不准的。

    首先,这个问题不是只存在在python中,其他语言也有同样的问题

    其次,小数不精准是因为在转换成二进制的过程中会出现无限循环的情况,在约省的时候就会出现偏差。

    比如:11.2的小数部分0.2转换为2进制则是无限循环的00110011001100110011...

    单精度在存储的时候用23bit来存放这个尾数部分(前面9比特存储指数和符号);同样0.6也是无限循环的;

    这里有一个问题,就是当我们的计算需要使用更高的精度(超过16位小数)的时候该怎么做呢?

    #借助decimal模块的“getcontext“和“Decimal“ 方法
    >>> a = 3.141592653513651054608317828332
    >>> a
    3.141592653513651
    >>> from decimal import *
    >>> getcontext()
    Context(prec=50, rounding=ROUND_HALF_EVEN, Emin=-999999, Emax=999999, capitals=1, clamp=0, flags=[FloatOperation], traps=[InvalidOperation, DivisionByZero, Overflow])
    >>> getcontext().prec = 50
    >>> a = Decimal(1)/Decimal(3)#注,在分数计算中结果正确,如果直接定义超长精度小数会不准确
    >>> a
    Decimal('0.33333333333333333333333333333333333333333333333333')
    
    >>> a = '3.141592653513651054608317828332'
    >>> Decimal(a)
    Decimal('3.141592653513651054608317828332')
    
    #不推荐:字符串格式化方式,可以显示,但是计算和直接定义都不准确,后面的数字没有意义。
    >>> a = ("%.30f" % (1.0/3))  
    >>> a  
    '0.333333333333333314829616256247'
    

    复数

    从上面的图中我们就可以看出,复数complex是由实数和虚数组成的

    要了解复数,其实关于复数还需要先了解虚数。虚数(就是虚假不实的数):平方为复数的数叫做虚数。

    复数是指能写成如下形式的数a+bi,这里a和b是实数,i是虚数单位(即-1开根)。在复数a+bi中,a称为复数的实部,b称为复数的虚部(虚数是指平方为负数的数),i称为虚数单位。

    当虚部等于零时,这个复数就是实数;当虚部不等于零时,这个复数称为虚数。

    注,虚数部分的字母j大小写都可以。

  • 相关阅读:
    腾讯TencentOS正式开放测试:支持“傻瓜式刷机”-android
    glob.h and glob.c for the Android NDK
    (OK) 在CentOS7—编译OpenSSL 静态库—for—Android
    Android
    Pass data to CGI script and back with jQuery.ajax
    yum—repo—How to Enable EPEL Repository for RHEL/CentOS 7/6/5
    裸机版的hello world
    CodeBlock 使用手册
    (NOT OK) How To Build CyanogenMod Android for Motorola Defy ("jordan")
    error: .repo/manifests/: contains uncommitted changes 解决办法
  • 原文地址:https://www.cnblogs.com/ricemi/p/7752991.html
Copyright © 2011-2022 走看看