delphi float string转换问题
vars:string;a:real;begins:='9.4';a:=9.4;ifstrtofloat(s)=athen//为什么条件不为true???begin......
var
s:string;
a:real;
begin
s:='9.4';
a:=9.4;
if strtofloat(s) = a then //为什么条件不为true???
begin
......
end;
...... 展开
s:string;
a:real;
begin
s:='9.4';
a:=9.4;
if strtofloat(s) = a then //为什么条件不为true???
begin
......
end;
...... 展开
1个回答
展开全部
delphi 中的StrToFloat返回的类型不是Float 而是Extended 在小数进行对比的时候 有时候出错。。
因为single和double是8字节 而Extended是10字节。
同一个小数存在double和extended中的值一般是不一样的,除非这个小数可以被有限的2进制数表示,而不是被无限的2进制数表示。
更安全的做法是使用function TryStrToFloat(const S: string; out Value: Double): Boolean; overload;
因为single和double是8字节 而Extended是10字节。
同一个小数存在double和extended中的值一般是不一样的,除非这个小数可以被有限的2进制数表示,而不是被无限的2进制数表示。
更安全的做法是使用function TryStrToFloat(const S: string; out Value: Double): Boolean; overload;
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询