1 | initial version |
Hello, @ortollj! This is not a bug. The problem with the third "show
" line (the direct rounding) is that, technically speaking, S.subs(tbNum)
is an expression, not a number. You can verify with show(type(S.subs(tbNum)))
. Mathematically, there is no difference between the expression S.subs(tbNum)
and the number S.subs(tbNum).n()
$\approx0.6095712$. However, from the computer point of view, they have different data-types, the former a <class 'sage.symbolic.expression.Expression'>
and the latter a <class 'sage.rings.real_mpfr.RealNumber'>
. The round()
function can only be applied to numerical data types. Conceptually, this is equivalent to try to round a string, as in round('hello', 7)
, although more easily confusing.
So, the solution is to first convert S
to a numerical type using the method n()
(or other less elegant alternatives) and then apply round()
, as you did in the first two "show
" lines. Alternatively, you can do the same in one step by using the digits
argument for n()
, as in the following bit of code:
show("round directly : ", S.subs(tbNum).n(digits=rd))
I hope this helps!