JS四捨五入

824 ワード

引用:http://www.cnblogs.com/zongxialian/archive/2011/03/31/2001268.html
 
書き方の大きな四捨五入の変換関数は以下の通りです。
function round(v,e){
var t=1;
for(;e>0;t*=10,e--);
for(;e<0;t/=10,e++);
return Math.round(v*t)/t;
}
 
JSの強大さに感嘆すると同時に、自分の無知にも感嘆します。
パラメータの中の:
vは変換する値を表します。
eは保持する桁数を表します。
関数の中の2つのfor、これがポイントです。
最初のforは小数点の右の場合、つまり小数点の右の何位を保留しますか?
第二のforは小数点左の場合、つまり小数点左の何位を保留しますか?
forの役割はtの値を計算することです。vは何倍の倍数(倍数=t)を拡大または縮小するべきですか?
forここでforの二つの特性を利用しました。条件判定とカウンタ積算(サイクル)は、
eが条件を満たすときforは継続し、eがアキュムレータ(eの毎回のアキュムレータは、forにループを満たさない条件を作成すること)すると同時に、tの値も計算する。
最後に原生のround法を利用して拡大/縮小されたvの結果を計算し、結果を正しい倍数に拡大/縮小します。