ArcTanの戻り値を度単位にするには?

解決


さすらい初心者  2003-03-04 17:47:07  No: 3086

ArcTan関数で計算させた戻り値を度分秒で表したいのですが、うまくいきません。180/Piを掛けてラジアン単位から変換するのですが、それだけでは10進数になってますよね。例えば「85.7245」のように。。
これを60進数の度分秒で表すよい方法はありませんでしょうか?。
随分ヘルプも見ましたが、行き詰まり、投稿させていただきました。
よろしくお願い致します。


Taku  2003-03-04 18:46:12  No: 3087

私も、一回で変換できる関数が見当たらなかったので、作って使用しています。
参考までに書き込んでおきますが、あまりスマートではないので  もっと良い方法が有ればお願いします。

function GetKakudo(Q:Double):string;
var D,S,M:Shortint;
begin
     D:=Trunc(Q);
     Q:=Frac(Q)*60;
     S:=Trunc(Q);
     Q:=Frac(Q)*60;
     M:=Trunc(Q);
     Result:=inttostr(D)+'度'+inttostr(S)+'分'+inttostr(M)+'秒'
end;

Trunc、Fracを使っているので秒以下から繰り上がることは有りません。
繰り上がりが必要な場合は、考慮して作り直してください。

それと、180/Piを掛けなくても、RadToDeg関数が有ります


にしの  2003-03-04 18:51:15  No: 3088

RadToDeg(ラジアンから度)
DegToRad(度からラジアン)
などですね。


にしの  2003-03-04 18:53:44  No: 3089

60進数でしたか。
見落としでした。
takuさんのようにやるのがベストと思います。

function GetKakudo(Q:Double; var D,S,M: ShortInt):string;
としてやれば、文字列だけでなく値も返せるので汎用的で便利ですよ。


さすらい初心者  2003-03-05 00:38:49  No: 3090

Takuさん、にしのさん、ありがとうございました。
やっぱり一発で変換できる関数は用意されていないのですね。
どうりでいくらヘルプ探しても無いはず。。
Delphiはビジネス色が濃いようですから、こういった関数もこれからのバージョンアップに期待したいですね。

Takuさんのコード。是非、使用させて頂きます。
御教授ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加