问题
I have the following repetitive simple code repeated several times that I would like to make a function for:
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)
I want to be able to call this function: def printStr(precision)
Where it preforms the code above and returns tabStr
with val
to precision
decimal points.
For example: printStr(3)
would return 63.457
for val
in tabStr
.
Any ideas how to accomplish this kind of functionality?
回答1:
tabStr += '%-15s = %6.*f\n' % (id, i, val)
where i
is the number of decimal places.
BTW, in the recent Python where .format()
has superseded %
, you could use
"{0:<15} = {2:6.{1}f}".format(id, i, val)
for the same task.
Or, with field names for clarity:
"{id:<15} = {val:6.{i}f}".format(id=id, i=i, val=val)
If you are using Python 3.6+, you could simply use f-strings:
f"{id:<15} = {val:6.{i}f}"
回答2:
I know this an old thread, but there is a much simpler way to do this:
Try this:
def printStr(FloatNumber, Precision):
return "%0.*f" % (Precision, FloatNumber)
回答3:
This should work too
tabStr += '%-15s = ' % id + str(round(val, i))
where i
is the precision required.
来源:https://stackoverflow.com/questions/5573736/how-to-specify-floating-point-decimal-precision-from-variable