how can I get it to return 2.4, or more generally, how can I get
numbers approximated to n decimal places?
And I mean how do I really change the value; I know I can
use NumberForm to change what is printed.
Then see this Table command not obeying limits related discussion, please. The value 2.4 as a rational number is 24/10. Everything else is subject to a number representation.
Mathematica uses binary floating point representation for approximate numbers (i.e. numbers with a decimal point). That means that you can never exactly represent a rational number whose denominator is not a power of 2 with an approximate number.