如果是用字符串表示的话. 以下函数即可.function HexStrToFolat(const Value: String): Double; var i: Integer; St, Str: String; F: Double; begin Result := 0.0; Str := Trim(Value); i := Pos('.', Str); St := Copy(Str, 0, i - 1); Result := StrToInt('$' + St); St := Copy(Str, i + 1, Length(Str) - i); F := StrToInt('$' + St); F := F/Power(16, Length(St)); Result := Result + F; end;方法与楼上的是一样的
x*16^n的和
其中x是每一位的值,n是阶次,从0开始计算上面的等于
(1*16^0)+(2*16^-1)+(13*16^-2)+(3*16^-3)+(14*16^-4)+(4*16^-5)........
可以用循环计算结果
i:Integer;
f:Double;s:=Trim('1.2d3e423c');
i:=Pos('.',s);
s1:=Copy(1,i-1);
f:=StrToInt('$'+s1);//计算整数部分
s1:=Copy(i+1,Length(s));
i:=Length(s1); //得到小数部分的16进制位数
f:=f + StrToInt('$'+s1)/Power(16,i);//再加上小数部分
var
i: Integer;
St, Str: String;
F: Double;
begin
Result := 0.0; Str := Trim(Value);
i := Pos('.', Str);
St := Copy(Str, 0, i - 1);
Result := StrToInt('$' + St); St := Copy(Str, i + 1, Length(Str) - i);
F := StrToInt('$' + St);
F := F/Power(16, Length(St));
Result := Result + F;
end;方法与楼上的是一样的