Ada: Fraction part of Float/Fixed as Integer

妖精的绣舞 提交于 2019-12-02 12:57:18

Not a full Answer but this gets the fractional part as a string to enable further manipulation to retreive it as an integer:

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;

In NWS suggestion, use
X_Int : constant Integer := Integer(Float'Truncation(X));
instead of
X_Int : constant Integer := Integer (X);

Otherwise, the whole part of the float may be rounded up (e.g. if X = 12.99, X_Int will be 13).

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!