asでの計算精度

詳説AS3.0 P216のあたり
多次元配列の説明の例を実際にやってみた

var row1:Array = [6, 2.99];
var row2:Array = [4, 9.99];
var row3:Array = [1, 59.99];
var spreadsheet:Array = [row1, row2, row3];
var total:Number;
for(var i:int = 0; i < spreadsheet.length; i++){
total += spreadsheet[i][0]*spreadsheet[i][1];
}
trace("total:" + total);

としたら

total:NaN

…?
原因切り分けのため 個別に計算して全部足してみた。

var total1:Number;
var total2:Number;
var total3:Number;
total1 = spreadsheet[0][0] * spreadsheet[0][1];
total2 = spreadsheet[1][0] * spreadsheet[1][1];
total3 = spreadsheet[2][0] * spreadsheet[2][1];
total = total1 + total2 + total3;

としたら

total:117.89000000000001
total1:17.94
total2:39.96
total3:39.96

なのに 全部足すと

117.89000000000001

…?
どこか間違っているのだろうか?元々精度がこんなものなのか?

普通のfunctionをClassに書き換える

意味が分かって書いているようになりました。
具体的に言うと
ビジュアルリファレンスブック3.0の例題 functionを classとして書けるようになった。
今月の2日に すべてに合点がいった。
3.0アニメーションや 3.0入門ノートを写経のように入力したり
入門ノートは 本当に写経した。ノート6冊になった。
ActionScript3.0が初めてというか Programingの再入門しかもオブジェクト指向は初めて。
今までいきなりclassで書くとかできず、
必要なimportも分からず 
けれどもimport flash.display.*;のように書くのも
ちょっと嫌だなと変なプライドが高かった。
プログラミングができる人とできない人
http://fragments.g.hatena.ne.jp/fukken/20081203/1228329796

1から10まで全部書けばいい(というか書くしかない)事に気づかないタイプと、自分の知識が信じられず「こんな初心者っぽい方法じゃなくて、何かもっといい方法があるはずだ」と足を止めてしまうタイプ

これであった(笑)
何が必要なのか 分かった。
英語でいうと 辞書さえあれば 
アメリカの街なかに置いてかれても大丈夫な感じの自信がでた。
過去のプログラム苦手な意識を上書きするのは 大変だろうなと思うのに