读书人

怎么将实数小数部分取出并将其转化成整

发布时间: 2012-03-05 11:54:01 作者: rapoo

如何将实数小数部分取出并将其转化成整数
这里有一段代码:
procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
begin
i:=strtoint(copy(floattostr(frac(strtofloat(edit1.Text))),3,1));
showmessage(inttostr(i));
end;

作用是将edit中输入的实数的小数部分取出然后将其转换成整数
现在有一个问题:如果在edit1中输入1000000000.8得到的结果是7而不是8,这是为什么?

[解决办法]
这是由于浮点数的存储规则导致的,因为frac(strtofloat(edit1.Text))取出的值是0.79999999999
[解决办法]
既然你定EDIT1入的是小的可以直接用.分割啊

copy(edit1.text,pos('.',edit1.text)+1,length(edit1.text)-pos('.',edit1.text)+1);

或者用 ExtractStrings 直接分割
[解决办法]
判断是整数还是实数的算法
如果当前数取正 - 本身 = 0 就是整数。
function IsZhengshu(const Value: Extended): boolean;
begin
result := Trunc(Value) - Value = 0;
end;
[解决办法]

探讨
判断是整数还是实数的算法
如果当前数取正 - 本身 = 0 就是整数。
function IsZhengshu(const Value: Extended): boolean;
begin
  result := Trunc(Value) - Value = 0;
end;

[解决办法]
if pos('.',edit1.text)>0 then begin
分割
end else
showmessage('整');

读书人网 >.NET

热点推荐