JavaScriptで小数点第n位を四捨五入するには?

[上に] [前に] [次に]
Apoptosis 2000/02/13(日) 03:15:26
JavaScriptを使って四捨五入するにMath.roundを使いますが、小数点第一位を四捨五入するため
Math.round(1.3333)は1となってしまいます。
Math.round(1.3333)を1.34など任意の桁数で四捨五入する方法はあるのでしょうか?

どうぞよろしくお願いします。

EMI 2000/02/13(日) 03:29:01
とりあえず、思いつきでこんなのはどうでしょう?
動作保証はしかねますが。効率悪そうだし。(^^;
あと、JavaScriptよく知らないので、結構適当です。

myround(val, n)
{
  for(i=0;i<n;i++){
    val *= 10;
  }
  val = round(val + 0.5);
  for(i=0;i<n;i++){
    val /= 10;
  }

  return val;
}

2000/02/13(日) 03:37:36
var kazu = 1.3333;
kazu = (kazu * 100);
kazu = Math.round(kazu + 0.5);
kazu = (kazu / 100);
alert(kazu);

2000/02/13(日) 03:39:03
遅かった(^-^;

Apoptosis 2000/02/13(日) 03:58:26
[[解決]]
猫さん、さっそくのアドバイスありがとうございます。
すごくスマートなやり方で感心してしまいました。
任意桁数の対応も楽ですし。
私もこういった発想ができればなぁ・・(^^;

ありがとうございました。

Apoptosis 2000/02/13(日) 04:21:20
解決後にナンですが、
kazu = Math.round(kazu + 0.5);は
kazu = Math.round(kazu);にしないと間違った値を出してしまいますね。
Math.roundだけで四捨五入はしてますから。

2000/02/13(日) 04:45:21
そうですね.失礼しました.

[上に] [前に] [次に]