美文网首页
python的round怎么不准?时而有效时而无效?

python的round怎么不准?时而有效时而无效?

作者: wyude | 来源:发表于2022-03-23 21:39 被阅读0次

    decimal 模块:decimal意思为十进制,这个模块提供了十进制浮点运算支持
    python 标准库 decimal:Decimal可用来保存具有小数点而且数值确定的数值,它不像float和real是用来保存近似值
    1.可以传递给Decimal整型或者字符串参数,但不能是浮点数据,因为浮点数据本身就不准确。

    >>> 0.1+0.1
    0.2
    >>> 0.1+0.2
    0.30000000000000004
    #二进制表示浮点数就是不准确的
    

    2.要从浮点数据转换为Decimal类型

    from decimal import * 
    Decimal.from_float(12.222)
    #结果为Decimal('12.2219999999999995310417943983338773250579833984375')
    #这个是因为传到 Decimal() 里的就已经不是一个精确的数值了
    #要正确转换就要先把浮点转为字符串
    

    3.通过设定有效数字,限定结果样式

    from decimal import * 
    getcontext().prec = 6 
    Decimal(1)/Decimal(7)
     # 结果为Decimal('0.142857'),六个有效数字
    

    4.四舍五入,保留几位小数

    from decimal import * 
    Decimal('50.5679').quantize(Decimal('0.00')) 
    # 结果为Decimal('50.57'),结果四舍五入保留了两位小数
    

    5.Decimal 结果转化为string

    from decimal import * 
    str(Decimal('3.40').quantize(Decimal('0.0'))) # 结果为'3.4',字符串类型
    

    相关文章

      网友评论

          本文标题:python的round怎么不准?时而有效时而无效?

          本文链接:https://www.haomeiwen.com/subject/wgehjrtx.html