入力された数値に従って、計算をするというスクリプトを作成しています。
計算結果が2.27272727…と続くような場合が出てくるので、
小数点以下第何位を四捨五入するとか、第何位以下を切り捨てるといった数学関数はありますか?
調べてみても、以下3つぐらいしかありませんでした。
Math.ceil()
Math.floor()
Math.round()

宜しくお願いします。

A 回答 (2件)

小数点以下第3位の四捨五入や切り捨てなら



x = Math.round( y * 100 ) / 100;
x = Math.floor( y * 100 ) / 100;

と言うように、小数点の位置を変えて、
計算してから元に戻してやれば、OKですよ。
    • good
    • 0
この回答へのお礼

簡単で、かつ初心者の私にもよ~く解かる回答を頂き、ありがとうございました。
なんか、してやられた! という感じで、感激してしまいました。今後とも宜しくお願いいたします。

お礼日時:2001/05/07 16:58

>小数点以下第何位を四捨五入するとか、


>第何位以下を切り捨てるといった数学関数はありますか?

ないと思います。

力技ですが次のようにすれば求めることが出来ます。
(xを小数点以下第n位で四捨五入する場合)

Math.round(x*Math.pow(10,n-1))/Math.pow(10,n-1)
    • good
    • 0
この回答へのお礼

力強く“ない”と言って頂き、嬉しかったです。(私自身も上司に言い張ってましたから)けれども、抜け道があることも知りました。
ありがとうございました。また、宜しくお願いします。

お礼日時:2001/05/07 16:54

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

QMath.sqrt(Math.pow(canvas.width / 2, 2) + Math.pow

どういう意味でしょうか?
・JavaScriptというよりは、数学(平方根とか)の意味がよく分からないのですが、
・累乗した後、平方根を求める?
・何のために?

Math.sqrt(Math.pow(canvas.width / 2, 2) + Math.pow(canvas.height / 2, 2)) | 0;

Aベストアンサー

こんにちは

三平方の定理(ピタゴラスの定理)
幅と高さのそれぞれの2乗の和の平方根を求めているので、対角線の長さを求めていることになります。
ご提示の式では、それぞれ1/2にしているので、結果は対角線の半分の長さになります。
(= 4分割した四角形の対角線)

http://chu.benesse.co.jp/qat/6434_m.html

Qjavascriptで四捨五入して小数点第1位表示で計算値が10になった場合、10.0と表示したい0表示にする方法

利率計算を作成していて、問題が発生したため、質問します。
以下ような計算式で、四捨五入し、小数点第1位表示まで
出来たのですが、計算値が整数になってしまった場合、
10と表示されます。これを何とか、整数値になった場合、
10.0と表示させたいのですが、良い方法があれば、
ご伝授いただければと思います。

ritu = Math.round( ritu * 1000 ) / 10;//小数点第1位表示四捨五入して代入

Aベストアンサー

ritu1 = Math.round(ritu*1000)/10;
ritu2 = Math.floor(ritu1);
ritu = ritu2 + "." + Math.floor((ritu1-ritu2)*10);

QMath.minについて

配列に格納した値の最小値を取得するために、下記のようなソースを書いたのですが、
配列の値全てが表示されてしまいます。どこが間違っているでしょうか?

var latlng2 = new Array() ;
for (var i = 0; i < 5; i++) {
var lat1 = i;
latlng2[i] = lat1;
}
alert(Math.min(latlng2));

Aベストアンサー

こんにちは。

配列の場合は
Math.min.apply(Math,latlng2)
だと思います。

QMath.randomは0にはならない? 0になる

・意味が分からないコードがあるので教えてください

■コード
for (var i = 0; i < 10; ++i) {
 switch ((Math.random() * 4) | 0) {
 case 0: hoge(); break;
 case 1: ……

■質問
・これはどういう処理をするコードでしょうか?
・「Math.random … 0 以上1未満」ということは0にはならないのでしょうか? なぜ「 | 0」?
・breakした場合、switchは抜けるけど、for文は継続?

Aベストアンサー

Math.random()は、 0 以上 1 未満 ということで、0 になることもあります。1にはなりません。
「 | 0 」は、0 と or でビット演算をするということですが、演算結果は整数となります。
Math.random()は、小数になるので、小数点以下を切り捨てるために、「 | 0」が付いているんですね。

breakは、switchのみを抜けます。breakが無いと、case 0の処理の後にcase 1の処理も実行してしまいます。

QMathクラスで

ただいま勉強中ですのでよろしくおねがいします。
間違っていたらごめんなさい
Mathクラスで切り捨てのメソッドは有りますか?
ceilは切り上げという使い方で良いですか?

Aベストアンサー

ごめんなさーい。勘違いしてました(「何を?」とは聞かないで…)。
Math.floor() を使ってください。
Math.round() だと四捨五入した値が返されます。

参考URL:http://tohoho.wakusei.ne.jp/js/math.htm#just


人気Q&Aランキング

おすすめ情報