小数点xx桁で四捨五入する toFixed() の使いにくいところ

なぜ、戻り値が文字列なのか。

var num = 123.456;
alert(typeof num);    // number
num = num.toFixed(2);
alert(typeof num);    // string

toFixed後に、値を表示するだけなら別に良いけど、
さらにその後、計算を続けるには、わざわざ数値化してあげないといけない*1

var num = 123.456;
num = num.toFixed(2);
alert(num + 10);          // 123.4610

alert(Number(num) + 10);  // 133.45999999999998


かといって、toFixedを使わない書き方も微妙だし。

var num = 123.456;
num = (Math.round(num*100))/100;
alert(num + 10);  // 133.45999999999998


まー、数値を計算途中で丸めるな、ということなんでしょうか。

*1:加算以外は勝手にキャストされてそうだが。