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.

Reply via email to