系统。T延长80Rec

来自RAD Studio API文档
跳转到:航行,搜索

德尔福

T延长80 Rec = 拥挤的 记录

C类++

结构 DECLSPEC_数据线 T延长80 Rec
{
私有的:
#ifndef_WIN64
    扩展 a扩展80;
#其他/*_WIN64(_WIN64)*/
    未签名的 __整数64 a延伸80Frac;
    用户界面16 aExtended80扩展;
#结尾/*_WIN64(_WIN64)*/
    用户界面8 __快速呼叫 内部获取字节(未签名的 索引);
    用户界面16 __快速呼叫 内部GetWords(未签名的 索引);
    无效 __快速呼叫 内部设置字节(未签名的 索引, 常数 用户界面8 价值);
    无效 __快速呼叫 内部设置字(未签名的 索引, 常数 用户界面16 价值);
    用户界面8 __快速呼叫 获取字节(未签名的 索引);
    用户界面16 __快速呼叫 获取单词(未签名的 索引);
    未签名的 __整数64 __快速呼叫 获取导出(_E)();
    未签名的 __整数64 __快速呼叫 获取Exp();
    未签名的 __整数64 __快速呼叫 GetFrac公司();
    布尔 __快速呼叫 获取签名();
    无效 __快速呼叫 设置字节(未签名的 索引, 常数 用户界面8 价值);
    无效 __快速呼叫 设置单词(未签名的 索引, 常数 用户界面16 价值);
    无效 __快速呼叫 设置导出(_E)(未签名的 __整数64 新Exp);
    无效 __快速呼叫 设置Exp(未签名的 __整数64 新建Exp);
    无效 __快速呼叫 SetFrac公司(未签名的 __整数64 NewFrac公司);
    无效 __快速呼叫 设置标志(布尔 新签名);
公众的:
    整数 __快速呼叫 指数();
    扩展 __快速呼叫 分数();
    未签名的 __整数64 __快速呼叫 曼蒂萨();
    __财产 布尔 签名 = {阅读=获取签名, =设置标志};
    __财产 未签名的 __整数64 费用 = {阅读=获取Exp, =设置Exp};
    __财产 未签名的 __整数64 _实验 = {阅读=获取导出(_E), =设置导出(_E)};
    __财产 未签名的 __整数64 压裂 = {阅读=GetFrac公司, =SetFrac公司};
    TFloat专用 __快速呼叫 特殊类型();
    无效 __快速呼叫 BuildUp(构建)(常数 布尔 标志标志, 常数 未签名的 __整数64 曼蒂萨, 常数 整数 指数);
    静止的 T延长80 Rec __快速呼叫 _操作_明确(扩展 );
    __财产 用户界面8 字节[未签名的 索引] = {阅读=获取字节, =设置字节};
    __财产 用户界面16 [未签名的 索引] = {阅读=获取单词, =设置单词};
};

属性

类型 可见性 来源 单位 起源
记录
结构
公众的
系统.pas
系统hpp
系统 系统

描述

提供对操作扩展精度浮点值的支持。

A类T延长80 Rec可用于对扩展精度浮点值执行低级操作。例如,可以分别更改符号、指数和尾数。

在Win32上的Delphi中,Extended数据类型为10字节。然而,在Win64上,扩展数据类型只有8个字节。使用T延长80 Rec在Win64上,您可以使用10位浮点变量执行与内存相关的操作,但不能执行扩展精度算术操作。

注:

例子

 
无功功率,无功功率
  F类: T延长80 Rec;
  E类: 扩展;
  : 整数;
常数
  选项卡 = Chr公司(9);
开始
  F类 := T延长80 Rec(-66.3);

  Writeln公司('签名:' + 选项卡 + 选项卡 + 国际贸易协定(整数(F类.签名)));
  Writeln公司('指数:' + 选项卡 + IntToStr公司(整数(F类.费用)));
  Writeln公司(“曼蒂萨:” + 选项卡 + 整数到十六进制(用户界面64(F类.曼蒂萨), 16));

  //指数减去1
  //这等于除以2
  F类.费用 := F类.费用 - 1;

  E类 := 扩展(F类);
  Writeln公司('扩展的大小£º' + 选项卡 + 国际贸易协定(大小Of(E类))); //在Win32上显示10,在Win64上显示8
  Writeln公司(浮点数到Str(E类)); //显示器-33.15(-66.3/2)

  // ...

扩展的大小为10字节时的控制台输出:

标志:1指数:16389曼蒂萨:849999999999999A扩展尺寸:10-33.15

扩展大小为8字节时的控制台输出:

标志:1指数:16389曼蒂萨:8499999999999800扩展的大小:8-33.15

如果扩展类型的大小为80位,则浮点常量“-66.3”的计算精度为64位。但是,如果扩展的大小为64位,则即使TExtended80Rec可以处理64位,“-66.3“的计算精度也仅为53位。这就是Mantissa(和Fraction)存在差异的原因。


另请参见