Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

format () : ValueError: Precision not allowed in integer format specifier

I am a python newbie.I am just getting acquainted with format method.

From a book that I am reading to learn python

What Python does in the format method is that it substitutes each argument
value into the place of the specification. There can be more detailed specifications
such as:
decimal (.) precision of 3 for float '0.333'
>>> '{0:.3}'.format(1/3)
fill with underscores (_) with the text centered
(^) to 11 width '___hello___'
>>> '{0:_^11}'.format('hello')
keyword-based 'Swaroop wrote A Byte of Python'
>>> '{name} wrote {book}'.format(name='Swaroop', book='A Byte of Python')

In the python interpreter if I try

print('{0:.3}'.format(1/3))

It gives the error

 File "", line 24, in 
ValueError: Precision not allowed in integer format specifier 
like image 333
liv2hak Avatar asked Jan 18 '14 04:01

liv2hak


2 Answers

It's better to add f:

In [9]: print('{0:.3f}'.format(1/3))
0.000

in this way you could notice that 1/3 gives an integer and then correct that to 1./3 or 1/3. .

like image 131
zhangxaochen Avatar answered Oct 20 '22 22:10

zhangxaochen


To print the floating point numbers, you have to have atleast one of the inputs as floats, like this

print('{0:.3}'.format(1.0/3))

If both the inputs are integers to the division operator, the returned result will also be in int, with the decimal part truncated.

Output

0.333

You can convert the data to float with float function, like this

data = 1
print('{0:.3}'.format(float(data) / 3))
like image 12
thefourtheye Avatar answered Oct 20 '22 22:10

thefourtheye