在Ada中,我想将12.345之类的数字分成两个不同的整数:
whole : integer := 12;
fraction : integer := 345;
整个部分很简单,但我不知道如何获得分数部分。
我的开始是:
12.345 mod Integer(12.345)
将返回0.345,并且可以乘以反向幅度(在本例中为×1000),但我不知道如何计算数字量。
答案 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)。