想要获取1个double数的最后2个字节,如何做?double

解决方案 »

  1.   

    http://blog.csdn.net/mahushen/article/details/8238186
      

  2.   

    doule是8个字节procedure TForm1.Button1Click(Sender: TObject);
    var
      dou:Double;
      buf:array[0..7] of Byte;
    begin
      dou:=0.12457;
      Move(dou,buf,8);
      ShowMessage('第7位:'+IntToStr(buf[6])+'第8位:'+IntToStr(buf[7]));
    end;
      

  3.   

    可以定义一个结构:
    Type
      PFloatRec=^TFloatRec;
      TFloatRec=Record
        a:Word;
        b:Word;
        c:Word;
        d:Word;
      End;
    然后PFloatRec(@double)^.d就是最后两个字节
      

  4.   

    还有一种办法是通过PInt64指针(Int64长度和Dobule一样):
    Word(PInt64(@double)^ shr 48)
      

  5.   

    var
      i:Double;
      s:string;
    begin
      i:=8.886;
      s:=FloatToStr(i);
      s:=RightStr(s,2);
      showmessage(s);
    end;
    结果为86;RightStr(S,2);//从S字符串变量的最右边(第一个字符包括第一个字符)开始截取2个字符;
    还有必需引用系统单元StrUtils;如果要使用LeftStr,RightStr,MidStr。