arredondamento incorreto de python com números de ponto flutuante

>>> a = 0.3135
>>> print("%.3f" % a)
0.314
>>> a = 0.3125
>>> print("%.3f" % a)
0.312
>>>

Eu estou esperando 0,313 em vez de 0,312 Qualquer pensamento sobre o porquê disso, e existe uma maneira alternativa que eu possa usar para obter 0,313?

obrigado

questionAnswers(2)

yourAnswerToTheQuestion