求Delphi中的一个数学计算问题

happy2000wf 2003-09-03 10:03:48
//角度类的申明
type
TJiao = class
Du: integer;
fen: integer;
miao: double;
private
public
function SetJiao(vd: integer; vf: integer; vm: double): boolean; overload;
function SetJiao(vs: string): boolean; overload;
end;

问如何写两角加和减的函数,我这里的函数原来秒是整形的,现要改为double型,如何修改程序????
// function
function JiaoJia(vj1,vj2: TJiao): TJiao;
var
rj: TJiao;
begin
rj:=TJiao.Create;
rj.Du:=vj1.Du+vj2.Du;
rj.fen:=vj1.fen+vj2.fen;
rj.miao:=vj1.miao+vj2.miao;
rj.fen:=rj.fen+(rj.miao div 60);
rj.miao:=(rj.miao mod 60);
rj.Du:=rj.Du+(rj.fen div 60);
rj.fen:=(rj.fen mod 60);
rj.Du:=(rj.Du mod 360);
result:=rj;
end;

// function
function JiaoJian(vj1,vj2: TJiao): TJiao;
var
rj,ry: TJiao;
begin
rj:=TJiao.Create;
ry:=TJiao.Create;
ry.SetJiao(360,0,0);
rj.Du:=vj1.Du-vj2.Du;
rj.fen:=vj1.fen-vj2.fen;
rj.miao:=vj1.miao-vj2.miao;
while(rj.miao<0) do
begin
rj.fen:=rj.fen-1;
rj.miao:=rj.miao+60;
end;
while(rj.fen<0) do
begin
rj.Du:=rj.Du-1;
rj.fen:=rj.fen+60;
end;
While(rj.Du<0) do
rj:=JiaoJia(rj,ry);
result:=rj;
ry.Free;

end;



有一个double类型的角度,如 24.754621度,如何得到度(int),分(int),秒(double)求这样一个函数

btw, double类型取整的函数是什么?
...全文
36 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
happy2000wf 2003-09-03
  • 打赏
  • 举报
回复
如何给分? :(
happy2000wf 2003-09-03
  • 打赏
  • 举报
回复
谢谢!!!毛塞顿开!!!接分
windindance 2003-09-03
  • 打赏
  • 举报
回复
不要这么复杂。
你的TJiao函数可以修改一下。
提供将类转换为double和将double转换为类的函数,
然后加、减就直接加减double值就可以了。
happy2000wf 2003-09-03
  • 打赏
  • 举报
回复
帮忙修改一下两角加减的函数,谢谢!!!!!
fhuibo 2003-09-03
  • 打赏
  • 举报
回复
Trunc
windindance 2003-09-03
  • 打赏
  • 举报
回复
Trunc

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧