niceNumber rounds numbers smaller than 1e-15 to 0

It's all well and good showing small numbers in scientific notation (see 9bfd15de5d1d09c2) but you can get what look like small numbers but should actually be 0 from some really innocuous calculations.
For example,
	1 - 0.9 - 0.1
is -2.7755575615628914e-17 according to JavaScript. This should be displayed as 0, but there's no way of distinguishing it from a "genuine" small number.

Maybe really small numbers should only be represented symbolically. Ideally, we'd use an arbitrary precision arithmetic library.