Python-小数,字符串常用格式处理

2017-01-01 10:46

参数格式化

  • 字符串的参数使用{NUM}进行表示,0, 表示第一个参数,1, 表示第二个参数, 以后顺次递加;使用":", 指定代表元素需要的操作, 如":.3"小数点三位, ":8"占8个字符空间等;还可以添加特定的字母, 如:
    • 'b' - 二进制. 将数字以2为基数进行输出.
    • 'c' - 字符. 在打印之前将整数转换成对应的Unicode字符串.
    • 'd' - 十进制整数. 将数字以10为基数进行输出.
    • 'o' - 八进制. 将数字以8为基数进行输出.
    • 'x' - 十六进制. 将数字以16为基数进行输出, 9以上的位数用小写字母.
    • 'e' - 幂符号. 用科学计数法打印数字, 用'e'表示幂.
    • 'g' - 一般格式. 将数值以fixed-point格式输出. 当数值特别大的时候, 用幂形式打印.
    • 'n' - 数字. 当值为整数时和'd'相同, 值为浮点数时和'g'相同. 不同的是它会根据区域设置插入数字分隔符.
    • '%' - 百分数. 将数值乘以100然后以fixed-point('f')格式打印, 值后面会有一个百分号.
    • 数字(0, 1, ...)即代表format()里面的元素, 所以可以使用"."调用元素的方法;
age = 25
name = 'Caroline'

print('{0} is {1} years old. '.format(name, age)) #输出参数
print('{0} is a girl. '.format(name))
print('{0:.3} is a decimal. '.format(1/3)) #小数点后三位
print('{0:_^11} is a 11 length. '.format(name)) #使用_补齐空位
print('{first} is as {second}. '.format(first=name, second='Wendy')) #别名替换
print('My name is {0.name}'.format(open('out.txt', 'w'))) #调用方法
print('My name is {0:8}.'.format('Fred')) #指定宽度

小数格式处理

  • round()

    • 一定要注意它不是简单的四舍五入,而是ROUND_HALF_EVEN的策略。一般不介意使用
    •  round()如果只有一个数作为参数,不指定位数的时候,返回的是一个整数,而且是最靠近的整数(这点上类似四舍五入)。但是当出现.5的时候,两边的距离都一样,round()取靠近的偶数,这就是为什么round(2.5) = 2。当指定取舍的小数点位数的时候,一般情况也是使用四舍五入的规则,但是碰到.5的这样情况,如果要取舍的位数前的小树是奇数,则直接舍弃,如果偶数这向上取舍。看下面的示例:

      >>> round(2.635, 2)
      2.63
      >>> round(2.645, 2)
      2.65
      >>> round(2.655, 2)
      2.65
      >>> round(2.665, 2)
      2.67
      >>> round(2.675, 2)
      2.6
  • math模块的ceil(x) 取大于或者等于x的最小整数。

  • math模块的floor(x) 去小于或者等于x的最大整数。

>>> from math import ceil, floor
>>> round(2.5)
2
>>> ceil(2.5)
3
>>> floor(2.5)
2
>>> round(2.3)
2
>>> ceil(2.3)
3
>>> floor(2.3)
2
>>>
  • 使用格式化

    • 效果和round()是一样的。
    >>> a = ("%.2f" % 2.635)
    >>> a
    '2.63'
    >>> a = ("%.2f" % 2.645)
    >>> a
    '2.65'
    >>> a = int(2.5)
    >>> a
    2