• Python新手学习-打卡第四天【2019-2-11】


    数据类型

     
    浮点数float,简单来说是带小数点的,小数点后最多16位
    这是因为,Python计算浮点数的方式与我们不一样。Python计算浮点数时,会先把0.55和0.3转化成二进制数【注:二进制数由0和1表示,逢二进一】,如下列代码:
    #进制转换
    0.55(十进制) = 0.1000110011001100110011001100110011001100110011001101(二进制)
    0.3(十进制) = 0.0100110011001100110011001100110011001100110011001101(二进制)
    然后,这俩二进制数通过二进制法则运算后,再通过复杂的计算公式,将二进制结果转成十进制小数。
    经过这两次转换,小数点后面就产生了多余的“尾巴”。这样,就造成了我们与程序计算结果的差异
     

    python2

    >>> print(0.55+0.3)
    0.85
    >>>

    python3

    >>> print(0.55+0.3)

    0.8500000000000001

    >>> a="我"
    >>> b='有'
    >>> c=100
    >>> d="""元"""
    >>> print(a+b+str(c)+d)
    我有100元
    >>> print(a+b+'c'+d)
    我有c元
    >>> print(a+b+`c`+d)
    我有100元
    >>>

    可是,为什么引号内我们使用的是数字,而不是变量名c呢?这是因为,当我们使用引号时,引号里的东西,都会被强制转换为字符串格式

    所以,如果我们把变量名c放进引号里后,被强制转换为字符串的,将是变量名c,而不是变量名代表的数字10

     
    int()函数转换数据类型
    bug = '666' hair = '0' print(int(bug)+int(hair))
    注意一点:只有符合整数规范的字符串类数据,才能被int()强制转换。

    别看它虽然只有一句话,但它其实带有三层含义:首先,整数形式的字符串比如'666'和'0',可以被int()函数强制转换

    其次,文字形式,比如中文、火星文或者标点符号,不可以被int()函数强制转换,

    最后,小数形式的字符串,由于Python的语法规则,也不能使用int()函数强制转换

     
    比方说下列代码,如果点击运行,程序会报错【ValueError:invalid literal for int() with base 10: '3.8'
    print(int('3.8'))
    
    #运行后显示结果:ValueError:invalid literal for int() with base 10: '3.8'
    print(int(3.8))
    3
    上方的代码串,就是一条将浮点数3.8强制转换的语句。但是,为什么输出的结果是3呢?
    你看,int()函数的本质是将数据转换为整数。所以对于浮点数,int()函数会做取整处理。但是,同我们平时对小数四舍五入的处理方法不同,int()函数会直接抹零,直接输出整数部分。
    可是,如果遇到这种情况:字符串就是小数形式,比如'3.8'这种。我不想让它变为整数3,想让它保持小数形式的3.8,那我要怎么做呢?
    首先float()函数的使用,也是将需要转换的数据放在括号里,像这样:float(数据)
    其次,float()函数也可以将整数和字符串转换为浮点类型。但同时,如果括号里面的数据是字符串类型,那这个数据一定得是数字形式。

    >>> word = '3.8'
    >>> number = 1
    >>> sentence = '人工智障说:3.8+1等于'
    >>> print(sentence+str(int(float(word)+number)))
    人工智障说:3.8+1等于4
    >>>

     错误案例:

     int()函数无法转换小数形式的字符串

     

  • 相关阅读:
    Linux内核将要支持最新龙芯3A2000/3B2000
    微软拥抱Linux,着实太晚了
    武校学生
    第一篇 SCI 综述被接收的感想
    如何使用Rally+Docker测试OpenStack
    (OK) ntp——linux设置系统时间—RHEL—FEDORA—CENTOS
    理解 Linux 网络栈(2):非虚拟化Linux 环境中的 Segmentation Offloading 技术
    (OK) find-alter-files.sh——递归
    (OK) digui-gb18030-utf8.sh——递归
    (OK) digui-dir-del-M.sh——递归
  • 原文地址:https://www.cnblogs.com/kissit/p/10381399.html
Copyright © 2020-2023  润新知