zoukankan      html  css  js  c++  java
  • 03 Python数值类型及数字类型详解

    Python的9大数值类型

      Python中有4种数字类型和5种序列类型,共9种数值类型。

      4种数字类型分别是:整型(int),浮点型(float),复数(complex),布尔值(bool)。

      5种序列类型分别是:列表(list),字符串(str),元组(tuple),字典(dict),集合(set)。

    使用 type() 函数可以查看数值类型以及其他类型,可向type()传参数为变量或值,返回类型。

    在Python自带的IDLE中尝试以下代码:

    a = 3
    print(type(a))
    b = 2.1
    print(type(b))
    c = "Hello world !"
    print(type(c))
    d = True
    print(type(d))

    执行结果是:

    <class 'int'>
    <class 'float'>
    <class 'str'>
    <class 'bool'>

    整型(int)

      就是整数,Python中的整数是没有大小限制的,写多少位都可以,只要你内存够。

      int()函数可以将其他类型强制转化成整数类型,但并不是所有都可以转化。

    下面代码是将字符串转化成整数。

    date = "20190713"
    print(type(date))
    datenum = int(date)
    print(datenum)
    print(type(datenum))

    执行结果为:

    <class 'str'>
    20190713
    <class 'int'>

    浮点型(float)

      就是小数,双精度储存,与java中的double类型一样。小数在python中叫浮点数,位数不固定。无限循环小数默认保留16位。

      类似于int(),float()函数可以将其他类型强制转化成浮点型。

    a = True
    print(float(a))

    执行结果为:

    1.0

      python解释器中由于小数是双精度的,有的非循环小数储存的其实是个无限循环小数,显示默认16位。这会造成计算误差。

    比如下列代码:

    print(1.2-1)
    print(0.2*0.2)

    执行结果为:

    0.19999999999999996
    0.04000000000000001

    为了精确计算,解决方法有两个,round函数和Decimal函数。

      方法一:round(算式,保留位数) 

    print(round(0.2*0.2, 2))

    执行结果:

    0.04

    方法二:导入Python自带的decimal模块中的Decimal类,类中有个方法叫函数叫Decimal(),注意使用Decimal时括号只能传字符串数字。

    from decimal import Decimal
    a = Decimal('0.2')*Decimal('0.2')
    print(a)

    执行结果:

    0.04

    布尔型(bool)

    只有True和False两种,一般用于条件判断。若在计算中使用布尔值,False代表0,True代表1。注意布尔值首字母大写。例如e=True或e=False。

    e=True+False
    print(e)

    执行结果:

    1

    复数(complex)

    首先理解什么是虚数,初中我们就学过虚数?

    首先我们导入math和cmath模块使用平方根函数来理解虚数。

    sqrt()就是开平方函数,我们用math包中的实数开平方函数给-1开平方。

    from math import sqrt
    sqrt(-1)

    负数没有平方根,执行结果当然会报错:

    Traceback (most recent call last):

      File "<stdin>", line 1, in <module>

    ValueError: math domain error

    若我们用cmath中的虚数开平方函数给-1开平方呢?

    from cmath import sqrt
    sqrt(-1)

    执行结果:

    1j

      我们利用math模块的sqrt对-1开平方,结果报错了,因为-1开平方结果不是实数。我们再利用cmath模块的sqrt对-1开平方,结果是1j。j就是虚数,1个j表示-1的平方根,系数1不能省略。

      由实部和虚部组成的数就是复数,实部就是实数,虚部只能用n倍的 j 代替,1倍的j也要打上1,例如赋值e=1+2j,1+2j就是复数,a=5+1j,5+1j就是复数。Python编程基本用不到复数。复数其实是个对象,查看实部输入<object>.real,查看虚部系数输入<object>.imag,即查看对象属性。

     例如下面的代码:

    e=1+2j
    print(type(e))
    print(e.real)
    print(e.imag)

    执行结果为:

    <class 'complex'>
    1.0
    2.0

    数字类型运算符

    四则运算:加+,减-,乘*,除/

    print(4+2)
    print(4-2)
    print(4*2)
    print(4/2)

    执行结果:

    6
    2
    8
    2.0

    向下圆整://,取小于等于计算结果的最近整数。

    print(5//3)

    执行结果:

    1

    向上圆整:取大于等于计算结果的最近整数。需要使用math模块的ceil()函数,()里可填算式或小数,算法是消除计算结果的小数,整数+1。

    import math
    a = math.ceil(5/3)
    print(a)

    执行结果为:

    2

    除法取余:%,算法是a%b = a - (a//b)*b

    print(5%3)

    执行结果(5除以3商是1余2。)为:

    2

    幂运算:**

    print(5**3)

    执行结果为:

    125

     另外math包中有很多函数可以替代运算符,比如幂运算函数pow(),我们计算4的3次方。其他诸如此类函数请查阅Python的API 文档。

    import math
    mi = pow(4, 3) print(mi)

    执行结果为:

    64

  • 相关阅读:
    Markdown 入门指南
    跨域
    正则表达式之基础(二)
    Java并发编程 ReentrantLock是如何通过AbstractQueuedSynchronizer(AQS)来加锁解锁的
    Java异步编程工具 CompletableFuture
    IntelliJ idea evaluate expression
    Java Arrays.asList 返回的集合执行iterator.remove报java.lang.UnsupportedOperationException问题
    ie浏览器 GET请求带中文请求,tomcat返回400
    Spring boot 集成dubbo
    [REUSE_ALV_GRID_DISPLAY_LVC]-显示单选按钮(radio button)
  • 原文地址:https://www.cnblogs.com/Nonstopcoding/p/11162181.html
Copyright © 2011-2022 走看看