python
  • string
  • floating-point
  • floating-point-precision
  • 2011-04-06 72 views 7 likes 
    7

    我有以下的重复简单的代码,反复几次,我想提出一个功能:如何从变量中指定浮点小数精度?

    for i in range(10): 
        id = "some id string looked up in dict" 
        val = 63.4568900932840928 # some floating point number in dict corresponding to "id" 
        tabStr += '%-15s = %6.1f\n' % (id,val) 
    

    我希望能够调用此函数:def printStr(precision)
    凡预制件以上,并返回代码tabStrvalprecision小数点。

    例如:printStr(3)
    将在tabStr返回63.457val

    任何想法如何完成这种功能?

    回答

    24
    tabStr += '%-15s = %6.*f\n' % (id, i, val) 
    

    其中i是小数位数。


    顺便说一句,在最近的Python其中.format()已经取代%,你可以使用

    "{0:<15} = {2:6.{1}f}".format(id, i, val) 
    

    为同一任务。

    或者,为了清楚起见,字段名:

    "{id:<15} = {val:6.{i}f}".format(id=id, i=i, val=val) 
    

    如果您使用Python 3.6或更高版本,你可以简单地使用f-strings

    f"{id:<15} = {val:6.{i}f}" 
    
    +0

    感谢您的帮助! – Jeremy 2011-04-07 14:44:40

    +0

    @Jeremy你应该接受答案 – michaelsnowden 2015-09-12 23:01:11

    0

    这应该工作太

    tabStr += '%-15s = ' % id + str(round(val, i)) 
    

    其中i是所需的精度。

    7

    我知道这一个古老的线程,但有一个更简单的做到这一点的方法:

    试试这个:

    def printStr(FloatNumber, Precision): 
        return "%0.*f" % (Precision, FloatNumber) 
    
    相关问题