ArcTan関数で計算させた戻り値を度分秒で表したいのですが、うまくいきません。180/Piを掛けてラジアン単位から変換するのですが、それだけでは10進数になってますよね。例えば「85.7245」のように。。
これを60進数の度分秒で表すよい方法はありませんでしょうか?。
随分ヘルプも見ましたが、行き詰まり、投稿させていただきました。
よろしくお願い致します。
私も、一回で変換できる関数が見当たらなかったので、作って使用しています。
参考までに書き込んでおきますが、あまりスマートではないので もっと良い方法が有ればお願いします。
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関数が有ります
RadToDeg(ラジアンから度)
DegToRad(度からラジアン)
などですね。
60進数でしたか。
見落としでした。
takuさんのようにやるのがベストと思います。
function GetKakudo(Q:Double; var D,S,M: ShortInt):string;
としてやれば、文字列だけでなく値も返せるので汎用的で便利ですよ。
Takuさん、にしのさん、ありがとうございました。
やっぱり一発で変換できる関数は用意されていないのですね。
どうりでいくらヘルプ探しても無いはず。。
Delphiはビジネス色が濃いようですから、こういった関数もこれからのバージョンアップに期待したいですね。
Takuさんのコード。是非、使用させて頂きます。
御教授ありがとうございました。
ツイート | ![]() |