zoukankan      html  css  js  c++  java
  • 流畅的python和cookbook学习笔记(四)

    1.数字的四舍五入

      对于简单的舍入运算,使用内置的 round(value, ndigits) 函数即可。

      round 函数返回离它最近的偶数。也就是说,对 1.5 或者 2.5 的舍入运算都会得到 2。

    >>> round(2.5)
    2
    >>> round(1.5)
    2

      round()的参数ndigits可以是负数,取整到十位,百位,千位, 效果如下:

    >>> a = 13123213
    >>> round(a, -1)
    13123210
    >>> round(a, -2)
    13123200
    >>> round(a, -3)
    13123000

      不要将舍入和格式化输出搞混淆了。如果你的目的只是简单的输出一定宽度的数, 不需要使用 round() 函数。只需要在格式化的时候指定精度即可。

    >>> x = 1.231231241
    >>> format(x, '0.4f')
    '1.2312'
    >>> 'value is {:0.3f}'.format(x)
    'value is 1.231'

    2.精确的小数计算

      浮点数无法精确的表达出所有的十进制小数位。

    >>> a = 4.2
    >>> b = 2.1
    >>> a + b
    6.300000000000001
    >>> (a + b) == 6.3
    False

      可以使用decimal模块来提高精确值,但是要牺牲一些性能。

    >>> from decimal import Decimal
    >>> a = Decimal('4.2')
    >>> b = Decimal('2.1')
    >>> a + b
    Decimal('6.3')
    >>> print(a + b)
    6.3
    >>> (a + b) == Decimal('6.3')
    True

      控制位数和四舍五入。

    >>> from decimal import localcontext
    >>> a = Decimal('1.4')
    >>> b = Decimal('1.9')
    >>> print(a/b)
    0.7368421052631578947368421053
    >>> with localcontext() as num:
    ...     num.prec = 3
    ...     print(a/b)
    ...
    0.737
    >>> with localcontext() as num:
    ...     num.prec = 50
    ...     print(a/b)
    ...
    0.73684210526315789473684210526315789473684210526316

    3.格式化数值

      1.使用内建函数format(),可以自定义保留多少位,居中等操作。想采用科学计算法,把 f 改为 e 或 E 即可。

    >>> x = 1234.56789
    >>> format(x, '0.2f') # 保留两位小数
    '1234.57'
    >>> format(x, '>10.1f')  #左边留白
    '    1234.6'
    >>> format(x, '<10.1f')  #右边留白
    '1234.6    '
    >>> format(x, '^10.1f')  # 居中
    '  1234.6  '
    >>> format(x, ',')          # 显示千位
    '1,234.56789'
    >>> format(x, '0.1f')     # 保留一位小数
    '1234.6'

       2.输出整数浮点数格式规则。

      b: 输出整数的二进制方式;

      c: 输出整数对应的Unicodez 字符;

      d: 输出整数对应的十进制方式;

      0: 输出整数对应的八进制方式;

      x: 输出整数对应的小写十六进制方式;

      X: 输出整数对应的大写十六进制方式;

    >>> '{0:b}, {0:c}, {0:d}, {0:o}, {0:x}, {0:X}'.format(2333)
    '100100011101, झ, 2333, 4435, 91d, 91D'
  • 相关阅读:
    图像增强:直方图均衡和小波变换【matlab】
    边缘检测算子和小波变换提取图像边缘【matlab】
    维纳滤波和编码曝光PSF去除运动模糊【matlab】
    编码曝光
    鱼眼镜头的distortion校正【matlab】
    Linux如何查看JDK的安装路径
    Linux启动vi编辑器时提示E325: ATTENTION解决方案
    Linux下useradd命令创建的用户不能登录的问题
    Linux系统下(x64)安装jdk 1.6(jdk-6u45-linux-x64.bin)
    根据wsdl文件,Web工程自动生成webservice客户端调用
  • 原文地址:https://www.cnblogs.com/zt19994/p/7492011.html
Copyright © 2011-2022 走看看