edit1里有61.1(是时间秒),如何在edit2里显示出1'1''1(20分)

  • 主题发起人 主题发起人 coolcat3000
  • 开始时间 开始时间
C

coolcat3000

Unregistered / Unconfirmed
GUEST, unregistred user!
edit1里有61.1(是时间秒),如何在edit2里显示出1'1''1
 
用int取整
mod取余
 
自己改写换算一下,
 
应该先用60去除61.1得到一个数 X
还用原来的数
用int取整
mod取余
X'y''z
 
var a,b:real;
a1,a2,c:integer;
begin
a:=61.1;
b:=a-int(a);
b:=b*10;
c:=int(b);
a1:=int(a) div 60;
a2:=int(a) mod 60;
showmessage(inttostr(a1)+''''+inttostr(a2)+''''''+inttostr(c));
end;
 
执行之后,在(c:=int(b))那句出错了,提示incompatibletypes:'integer'and'extended'
另外,小数点后的数怎么样取,不能总是乘10吧
 
var
F: Double;
begin
F := StrToFloat(Edit1.Text); //秒数
Edit2.Text := Format('%d''%d''''%d', [Trunc(F) div 60, Trunc(F) mod 60,
Trunc(Frac(F) * 10)]); //要取多少位就乘10的多少次方了 [:D]
end;
 
function Real2Time(t: Double): string;
var
it, m, s:integer;
rp: string; // 用于保存小数部分
begin
it := Trunc(t); // 取得整数值
m := t div 60; // 取得 分钟
s := t mod 60; // 取得 秒钟
rp := FloatToStr(t); // 取得 小数部分
Delete(rp, 1, 2); // 删除 '0.'
Result := Format('%d''%d''''%s', [m, s, rp]);
end;
 
后退
顶部