Python 3 implements "round to even on tie" logic so `round(12.5)` -> 12, not 13. I have updated, in #16608 <https://github.com/sympy/sympy/pull/16608>, the round function but there is a difference in how ties are detected. I shift the desired position to the ones position and then check for a tie so 12.345 is shifted to 1234.5 and rounded to 1234 then is divided by 100 to give 12.34. Python doesn't do this. I suspect it adds 0.05 and then detects that12.395 > 12395/1000 and rounds up to 12.35
>>> Rational(*.345.as_integer_ratio())-Rational(345,1000) # .345 < 345/1000 -3/112589990684262400 >>> Rational(*.395.as_integer_ratio())-Rational(395,1000) # .395 > 395/1000 1/56294995342131200 >>> round(12.345,2) # 12.345 rounds up b/c a tie is not detected 12.35 Does anyone have objections to the proposed rounding? /c -- You received this message because you are subscribed to the Google Groups "sympy" group. To unsubscribe from this group and stop receiving emails from it, send an email to sympy+unsubscr...@googlegroups.com. To post to this group, send email to sympy@googlegroups.com. Visit this group at https://groups.google.com/group/sympy. To view this discussion on the web visit https://groups.google.com/d/msgid/sympy/a84085c6-aa90-437c-b063-a87f909beac4%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.