我想把大于0小于等于2的数让它为2,大于2小于等于4的数让它为4,依此类推,请问怎么做
解决方案 »
- 热心人很多,上贴已结!请教能否自动打开QQ视频请求
- 血与泪的教训.Record的string一定要限定长度..
- delphi 删除数据库文件
- 如何屏蔽邮件发送出错时弹出的错误窗口?
- 一个关于ADOQUERY 控件的问题
- delphi数据库数据导入导出问题
- Delphi6能用在Delphi5里边使用的控件吗?
- 另请问知道如何将int型转换成定长的字符型,若不够长用‘0’补位吗????、
- 请教TListView方面的高手
- delphi实现如下图所示的样子,,怎么处理GBgrid和fastreport,刚学delphi 麻烦说详细点
- 我想做一个远程的c/s结构的系统,能提供一个方案吗?[悬赏100分]
- delphi中增加表中的列怎么实现?
x:integer;
begin
f:=1.2322131;
x:=trunc(f);
x:=x+(x mod 2);
end;
暂时用了一个max来表示一个上限,最多可以转换2的max次方的数,这样可以减少循环次数
这里给的是10000,如果2的10000次方不能满足你的要求就再给大一点,自己调整。procedure TForm1.Button1Click(Sender: TObject);
var
i: integer;
j: extended;
const
max: integer = 10000;
begin
j := 123.777;
for i:=0 to max do
begin
if ((j>=power(2, i)) and (j<power(2, i+1))) then break;
end;
if i=max+1 then
ShowMessage('Error')
else
ShowMessage(FloatToStr(power(2, i+1)));
end;
x:integer;
begin
f:=1.2322131;
if (f-(trunc(f))>0 then begin
x:=trunc(f)+1
x:=x+(x mod 2);
end else begin
x:=f;
x:=x+(x mod 2);
end
end;
procedure TForm1.Button1Click(Sender: TObject);
var
i: integer;
j: extended;
begin
j := 123456.777;
for i:=0 to trunc(j)+1 do
if ((j>=2*i) and (j<2*(i+1))) then break;
if i=trunc(j)+2 then
ShowMessage('Error')
else
ShowMessage(FloatToStr(2*(i+1)));
end;
2.01就不行了
那就取整后再整除2再乘2在+2就行了
(trunc(i) div 2)*2+2还是意思是大于4小于8等于8,大于8小于16等于16?