关于小数的取舍问题(50分)

  • 主题发起人 主题发起人 yao99
  • 开始时间 开始时间
Y

yao99

Unregistered / Unconfirmed
GUEST, unregistred user!
我希望输入123.456,要得到123.45,第三位小数不作判断自动舍去,该用什么方式实现
 
var
i:integer;
data:integer;
begin
i:=strtoint(edit1.text);
data:=format(0.00,i);
format这函数可以作到你要做的事情,我上面的调用可能不对,你去看delphi的帮助文件拉。
 
FormatFloat(const Format: string;
Value: Extended)
FormatFloat('0.00',value);
 
用FormatFloat('0.00',value)会发生进位的
 
int(123.456*100)/100
 
F := Trunc(F * 100) / 100;
 
小数点后总是3位吗?
 
如果在 TEdit 中处理,可以在 OnExit 事件中如下进行:
procedure TForm1.Edit1Exit(Sender: TObject);
var
x:integer;
y:string;
begin
y:=Edit1.text;
x:=pos('.',y);
if x<0 then
exit;
if (x+2<length(y)) then
Edit1.text:=copy(y,1,x+2);
end;
 
jsxjd你好:如果是整数的话就有欠缺
 
老兄,你有没有看我的回复啊,这样难道不行吗?
ShowMessage(Format('%.2f', [Trunc(F * 100) / 100]));
 
procedure TForm1.Edit1Exit(Sender: TObject);
var
x:integer;
y:string;
begin
y:=Edit1.text;
x:=pos('.',y);
if x<=0 then
exit;
//这里
if (x+2<length(y)) then
Edit1.text:=copy(y,1,x+2);
end;
 
不知你要始终保留两位还是始终舍去最后一位。
 
接受答案了.
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
890
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部