# Rounding the values of a mapping

The problem is only with the round(, 2) code

f(x)=round((1/add([10, 20 ,30]))*x,2)


This gives an error since round() couldn't be applied to a theoretical argument. The following code works but I want to obtain truncated to 2 digits percentages not elements of Q

edit retag close merge delete

Can you say what result you get and what result you would prefer to get?

Sort by » oldest newest most voted

You should not use a symbolic function for such purpose, symbolic functions should be understood as mathematical expressions, they are usefull if you want to view them as a mathematical object, for example if you want to derivate them.

Instead use a Python function, which is an object that returns a value given an entry.

There are two equivalent ways to define a Python function:

sage: def f(x):
....:     return round(1/add([10,20,30]) * x, 2)


Or, the shorter

sage: f = lambda x : round(1/sum([10,20,30]) * x, 2)


In both cases, you can do:

sage: percent_votes_cand=list(map(f,[10, 20 ,30]))
[0.17, 0.33, 0.5]

more