在这一章的Extra Credit部分,有一道题要求将计算出的浮点型数字输出,不会,所以google之。
原来Python中可像在C中一样,借助格式串来控制浮点数的输出。共有e/E、f和g三种格式转换符控制浮点数的输出,f用小数形式输出,e用指数形式输出,用g的话当幂大于或等于所给的精度时用科学计数法表示,否则用小数。e、f和g在小数位数方面有什么不同呢?我试验了一下(Python版本是2.7.2):
对e/f/g都指定精度为3,结果e输出了4位有效数字(3位小数),f输出了3位小数,g输出了3位有效数字。再来一例:
e和f依旧输出3位小数。但g只输出了两位有效数字,是因为再多的有效数字都是结尾的零,为了好看就没有输出。下例也证明了这个说法:
上面两例中,e和f都忠诚地输出了无用的零,但g却尽可能输出简洁的结果。
f这种输出固定小数位数的方式在某些地方是有用的,比如一系列代表权重的数字,我们希望它们的小数位数一样,这样加起来能够正好等于1。在类似场景中,e也同样适用。g可以给出最清晰的输出,但是不保证输出结果中有效数字位数或者小数位数等于指定的“精度”。
另外,既然print格式串能够控制输出小数位数,在程序中就不需要round函数了,这样可以保证计算的精度。只需在输出的时候用print格式串来控制小数位数。
评论