跳转到内容

Ada 编程/属性/'Compose

来自 Wikibooks,开放世界中的开放书籍

Ada. Time-tested, safe and secure.
Ada. 经久耐用、安全可靠。

X'Compose(Fraction : X, Exponent : Integer) 是一个 Ada 属性,其中 X 是任何浮点类型。

浮点类型表示为

其中

sign 为 1 或 -1
mantissa 是以 radix 为基数的分数
radix 是硬件基数(通常为 2)
exponent 是一个整数

'Compose(Fraction, Exponent) 返回具有用 Exponent 替换的指数的浮点数 Fraction。

with Ada.Text_IO;

procedure Compose is

   package T_IO renames Ada.Text_IO;
   package F_IO is new  Ada.Text_IO.Float_IO (Float);
   
   X : Float := 1.0;
begin
   T_IO.Put ("                   X = ");
   F_IO.Put(Item => X, Exp => 0);
   T_IO.New_Line;
   
   for Exp in -2..2 loop
      T_IO.Put ("Float'Compose(X, " & Integer'Image(Exp) & ") = ");
      F_IO.Put(Item => Float'Compose(X, Exp), Exp => 0);
      T_IO.New_Line;
   end loop;
   
end Compose;

在 x86-64 架构上使用 GNAT 4.6 的输出为

                   X =  1.00000
Float'Compose(X, -2) =  0.12500
Float'Compose(X, -1) =  0.25000
Float'Compose(X,  0) =  0.50000
Float'Compose(X,  1) =  1.00000
Float'Compose(X,  2) =  2.00000

Ada 参考手册

[编辑 | 编辑源代码]
华夏公益教科书