丸め


15桁を超える数値をJavaScriptで扱うと、勝手に丸められてしまうので要注意。(どっかにリファレンスか何かに書いてあるらしい)
以前、数値を切り上げてKだのGだのTだの付加して表示、って処理をやるときにハマった。
で、以下のように手計算した。



A.パラメタが15桁未満の場合、以下の処理を行う。
(1). データが10億未満の場合は何もしない
(2). データを1,000単位で切り上げた値(a)を取得する。10億未満ならば、'K'を付加
(3). 上記(a)を更に1,000単位で切り上げた値(b)を取得する。10億未満ならば、'M'を付加
(4). 上記(b)を更に1,000単位で切り上げた値(c)を取得する。10億未満ならば、'G'を付加


B.パラメタが16桁以上の場合
(1). 下3桁が"000"でなければ、繰り上がりとする。
(2). 下4〜6桁を数値とし、(1)の繰り上がりがあれば1を足す。その値が0でなければ、繰り上がりとする。
(3). 下7〜9桁を数値とし、(2)の繰り上がりがあれば1を足す。その値が0でなければ、繰り上がりとする。
(4). 下10桁以上を数値とし、(3)の繰り上がりがあれば1を足す。その値(c)が10億未満ならば、'G'を付加
(5). 上記(c)を更に1,000単位で切り上げた値に'T'を付加


記述は微妙に間違ってるかもだが雰囲気で。


要するに、JavaScriptにデータ持たせてなんかやるってのはダメってことかも。