C で小数を度に変換する方法を探しています。たとえば、C の asin() 関数は 10 進数を返しますが、その数値は度 ° 分 ' 秒 ".
たとえば、1.5 は 1°30'0" になります。
C で小数を度に変換する方法を探しています。たとえば、C の asin() 関数は 10 進数を返しますが、その数値は度 ° 分 ' 秒 ".
たとえば、1.5 は 1°30'0" になります。
このasin
関数はラジアンを返します。円には 2 π ラジアンがあります。
円は 360 度、1 度は 60 分、1 分間は 60 秒です。したがって、円には 360*60*60 秒があります。
double radians = asin(opposite / hypotenuse);
int totalSeconds = (int)round(radians * 360 * 60 * 60 / (2 * M_PI));
int seconds = totalSeconds % 60;
int minutes = (totalSeconds / 60) % 60;
int degrees = totalSeconds / (60 * 60);
ti84の>dmsのような1つのコマンドでこれを行う方法はわかりませんが、ロジックを使用できます。
小数に60を掛けます(つまり、.135 * 60 = 8.1)。
整数は分(8')になります。
残りの小数を取り、60を掛けます(つまり、.1 * 60 = 6)。
少し検索すると、これはc#で見つかりました: 10進角から10分分秒10分の1への変換。
double decimal_degrees;
// set decimal_degrees value here
double minutes = (decimal_degrees - Math.Floor(decimal_degrees)) * 60.0;
double seconds = (minutes - Math.Floor(minutes)) * 60.0;
double tenths = (seconds - Math.Floor(seconds)) * 10.0;
// get rid of fractional part
minutes = Math.Floor(minutes);
seconds = Math.Floor(seconds);
tenths = Math.Floor(tenths);
しかし、彼が言ったように、それは最初にラジアンから度に変換される必要があるでしょう。