Ada:Float的一部分/固定为整数

时间:2015-03-08 16:32:58

标签: floating-point ada

在Ada中,我想将12.345之类的数字分成两个不同的整数:

whole : integer := 12;
fraction : integer := 345;

整个部分很简单,但我不知道如何获得分数部分。

我的开始是:

12.345 mod Integer(12.345)

将返回0.345,并且可以乘以反向幅度(在本例中为×1000),但我不知道如何计算数字量。

2 个答案:

答案 0 :(得分:2)

不是一个完整的答案但是这会将小数部分作为一个字符串来启用进一步操作以将其作为整数进行检索:

with Ada.Text_Io;

procedure Remainder is 
   package Fio is new Ada.Text_IO.Float_IO(Float);

   X : constant Float := 12.345;
   X_Int : constant Integer := Integer (X);
   X_Rem : constant Float := Float'Remainder(X,Float (X_Int));

begin
   Fio.Put (X_Rem, Aft => 6, Exp => 0);

end Remainder;

答案 1 :(得分:0)

在NWS建议中,使用
    X_Int : constant Integer := Integer(Float'Truncation(X));
而不是     X_Int : constant Integer := Integer (X);

否则,浮点数的整个部分可能会向上舍入(例如,如果X = 12.99,则X_Int将为13)。