- ベストアンサー
Math.sin(30) を度で
Math.sin(30) で取得できるのはラジアンの値ですよね? そこで Math.sin(30) * 180 / Math.PI で度にしたいのですが、 結果は -56.61004208597725 になってしまいます。 なぜ 0.5 にならないのでしょうか、また、正しくは どう計算すればいいのでしょうか。よろしくお願いします。
- KanjiTalk
- お礼率42% (80/189)
- JavaScript
- 回答数3
- ありがとう数2
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>Math.sin(30) で取得できるのはラジアンの値ですよね? 違います。Math.sin()関数はラジアンから正弦を求める関数です。 Math.sin(?)で0.5にしたいなら、まずは度からラジアンに変換してから計算してください。 度からラジアンを求めるなら ラジアン = (度 / 180) * Math.PI で求められます。
その他の回答 (2)
- gura_
- ベストアンサー率44% (749/1683)
ご参考↓ <script type="text/javascript"> <!-- y = Math.sin(30 / 180 * Math.PI); document.write( y ); document.write("<br><br>"); y = Math.round(y*10)/10; document.write( "四捨五入値 " + y ); // --> </script>
(30 * 180 / Math.PI) だったらどうですか?
補足
すみません、ダメみたいです・・・。
関連するQ&A
- Math.pow
Javascriptでべき乗の余りを表で出力するスクリプトを書いているのですが、大きな値になると計算結果が正しく出力されません。 いろいろ検証してみたところ、大きな値になるとべき乗の計算結果が正しく出力されないことが判明しました。 例えば、31の11乗を計算すると 25408476896404831 ですが、Javascriptで31の11乗を計算すると a=Math.pow(31,11); document.write(a); で計算結果を出力すると 25408476896404830 になってしまいます。 結果としては、べき乗の余りを出力したいので 例えば、31の11乗を33で割った余り Math.pow(31,11)%33 が「31」と正しく出力されればよいのですが・・・。「32」と出力されてしまいます。大きな整数値の計算は、何か特別な工夫が必要なのでしょうか? アドバイスをよろしくお願いします。
- ベストアンサー
- JavaScript
- math.h等について
■質問1 #include <math.h> と書くだけで sin, cos, tan 等の様々な関数が使えますが、 inline float __CRTDECL sin(_In_ float _X) {return (sinf(_X)); } inline float sinf(_In_ float _X) {return ((float)sin((double)_X)); } などとなっていてsinがsinfを呼び出し、sinfがsinを呼び出し、sinが・・・ とグルグル回ってる気がするのですが実際どうなのでしょうか? ■質問2 質問1で述べたように実際にどのような計算でsinの値が弾かれているかわかりません。 マクローリン展開で近似された式を利用してsin関数ができると思うのですがmath.hをずっと眺めていてもみつかりませんでした。 どこに書いてあるのでしょうか? math.dllのようにライブラリ化しちゃってるのを呼び出してるだけなのでしょうか?
- ベストアンサー
- C・C++・C#
- integerクラスとMathクラス
適当な整数numをキーボードから入力し、その回数だけ0から360までの整数をランダムに発生させ、その整数を角度(弧度法)とみなしたとき、その正接(tan)が最大のとなる整数を表示するプログラム を以下の手順で下記に作成した結果、角度が同じ値になります。これはどうしてですか?また、手順通りのプログラムにするにはどのようなプログラムて適切ですか? 手順 (1)最大値となる角度を代入する整数型の変数maxを初期値-90で定義する。 (2)乱数を発生させる回数を入力する。 (3)0から360までの整数を、乱数を使って1つ発生させ、整数型の変数degに保存。この値を表 示する。 (4)角度degをラジアンに変換し、実数型の変数radに代入し、表示する。変換は rad = deg * Math.PI/180.0 (Math.PIは円周率を表す) で行なうことができる。ただし、実際のプログラムでは上式をそのまま書くのではなく、変数 の型に注意して記述すること。 (5)radを用いて正接(tan)を計算する。 (6)maxから計算されるtanの値と比較し、(4)の結果の方が大きければmaxをdegに書き換え る。 (7)(2)から(5)を入力した回数になるまで繰り返す (8)maxを表示する。import java.io.*; class Kakudo3 { public static void main(String args[]) throws IOException { int max = -90; System.out.println("整数を入力"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str1 = br.readLine(); int num = Integer.parseInt(str1); int deg =(int)(Math.random()*360); for(int i=0; i<num; i++){ System.out.print(deg+","); } double rad = deg*Math.PI/180.0; Math.tan(rad); } }
- ベストアンサー
- Java
- ラジアンとSINの関係
いつも大変お世話になります。 三角関数のことでご指導願います。 角度からラジアンの求めかたは理解できるのですが、なぜラジアンからSIN(高さ)をもとめることが出来るのでしょうか? SIN(ラジアン)により、例えばEXCELなどでSIN(2.3)と入力すると0.7457・・・と高さがでますが、なぜ0.7457・・・となるのでしょうか?こういうものだと思えばそれでいいのですが、なぜそうなるのか分りません。 計算式を踏まえてご説明いただきたく宜しくお願いいたします。
- ベストアンサー
- 数学・算数
- Math.sin() を使った計算が合わない
お世話になります。 物体を投げたときの距離を出す問題なのですが、激しく計算が合わず、例文の通りの答えが出ません。(マイナス値になってしまう) double decel = 10; //減速率(秒) double angleA = 30; //発射角度 double veroU = 200; //水平移動距離(m/s) とした時、 double sinV = Math.sin(angleA); double cosH = Math.cos(angleA); で、 double vu = veroU * sinV; //縦の力 double hu = veroU * cosH; //水平の力 double t = (2 * vu) / decel; //減速率 double s = hu * t; //距離(m) とすると s の値がマイナス千二百あたりになってしまいます(プラス三千あたりが正解)。何か致命的に間違っているような気はするんですが…。 出来るだけ自力で解きたいので、ズバリの答えよりも、ヒントになるJAVAのアドバイス頂けるとありがたいです。宜しくご教示ください。 m(_ _)m
- ベストアンサー
- Java
- sin(π)が0にならないです
C言語でsin(π)の値を出したいのですが0になりません。 1.224647e-16という値が出てきます。 sin(M_PI)と入力しています。 これを何とか0にする方法はないでしょうか? ご回答お願い致します。
- ベストアンサー
- C・C++・C#
- C言語にてsin,cosは何?
C言語でsin、cosを計算したところ、答えが違っていました。 netで探したところ<math.h>をincludeしていないせいだとわかったのですが、 <math.h>を指定しなかったら何を計算しているんでしょうか? Visual Studio 2013 win7 #include<stdio.h> #include <math.h> int main(void){ printf("結果=%f\n",sin(0.5)); }
- ベストアンサー
- C・C++・C#
- 楕円の軌道に傾斜をつける方法を教えてください
ActionScriptでボールを楕円に動かすスクリプトを作成しています。 x軸、y軸に平行に動くスクリプトはできるのですが、斜め45度に動くやり方がわかりません。 ↓x軸y軸に平行運動する楕円スクリプト。 //-------------------------------------------- //長軸100、短軸50の楕円形にボールを動かす r = 100;//半径 onClipEvent (enterFrame) { ang += 10; //角度を10ずつ追加 radian = Math.PI/180*ang; //ラジアンに変換(1度=pai割る180で計算) X = Math.cos(radian)*r; //コサイン×半径 でx座標を計算 Y = Math.sin(radian)*r; //サイン×半径 でy座標を計算 this._x = X; //Xを座標に反映 this._y = Y/2; //Yの半分を座標に反映 } //-------------------------------------------- なんとか傾斜した動きを作りたくていろんなサイトを見ましたが、どうしても式がわかりません。 ぜひ教えてもらえませんでしょうか。 どうぞよろしくお願いします。
- ベストアンサー
- Flash
- Math.minについて
配列に格納した値の最小値を取得するために、下記のようなソースを書いたのですが、 配列の値全てが表示されてしまいます。どこが間違っているでしょうか? var latlng2 = new Array() ; for (var i = 0; i < 5; i++) { var lat1 = i; latlng2[i] = lat1; } alert(Math.min(latlng2));
- ベストアンサー
- JavaScript
お礼
うまくいきました、ありがとうございます。やはり私がよく分かっていなかったようで・・・。