使用用户定义的精度在Python中打印元组

时间:2016-08-22 12:57:01

标签: python

关注Printing tuple with string formatting in Python,我想打印以下元组:

tup = (0.0039024390243902443, 0.3902439024390244, -0.005853658536585366, -0.5853658536585366)

只有5位数的精度。我怎样才能做到这一点?

(我已经尝试了print("%.5f" % (tup,)),但我得到了TypeError: not all arguments converted during string formatting

9 个答案:

答案 0 :(得分:1)

您可以使用自定义精度打印浮动“像元组一样”:

>>> tup = (0.0039024390243902443, 0.3902439024390244, -0.005853658536585366, -0.5853658536585366)
>>> print('(' + ', '.join(('%.5f' % f) for f in tup) + ')')
(0.00390, 0.39024, -0.00585, -0.58537)

答案 1 :(得分:0)

尝试以下(列表理解)

['%.5f'% t for t in tup]

答案 2 :(得分:0)

你可以处理单件物品。 试试这个:

>>> tup = (0.0039024390243902443, 0.3902439024390244, -0.005853658536585366, -0.5853658536585366)
>>> for t in tup:
    print ("%.5f" %(t))


0.00390
0.39024
-0.00585
-0.58537

答案 3 :(得分:0)

您可以像这样迭代元组,而不是打印结果 for python> 3

["{:.5f}".format(i) for i in tup] 

对于python 2.7

['%.5f'% t for t in tup]

答案 4 :(得分:0)

可能的解决方法:

tup = (0.0039024390243902443, 0.3902439024390244, -
       0.005853658536585366, -0.5853658536585366)

print [float("{0:.5f}".format(v)) for v in tup]

答案 5 :(得分:0)

实现这一目标的大多数Pythonic方法是使用map()lambda()函数。

>>> map(lambda x: "%.5f" % x, tup)
['0.00390', '0.39024', '-0.00585', '-0.58537']

答案 6 :(得分:0)

我想出了使用Numpy的另一种解决方法:

import numpy as np
np.set_printoptions(precision=5)
print(np.array(tup))

产生以下输出:

[ 0.0039   0.39024 -0.00585 -0.58537]

答案 7 :(得分:0)

这是python> 3.6的便捷函数,可以为您处理所有事情:

def tuple_float_to_str(t, precision=4, sep=', '):
    return '({})'.format(sep.join(f'{x:.{precision}f}' for x in t))

用法:

>>> print(funcs.tuple_float_to_str((12.3456789, 8), precision=4))
(12.3457, 8.0000)

答案 8 :(得分:-1)

试试这个:

class showlikethis(float):
    def __repr__(self):
        return "%0.5f" % self

tup = (0.0039024390243902443, 0.3902439024390244, -0.005853658536585366, -0.5853658536585366)
tup = map(showlikethis, tup)
print tup

你可能想重新引用你的问题,元组dnt有精确性。