IEEE 754 倍精度形式の数値を表す 64 ビットが与えられた場合、それらを同じ数値を表す 32 ビットに変換するためのアルゴリズムは何ですか?ただし、IEEE 754 単精度形式 (おそらく精度が失われます)。
また、ビットを操作することなく、Ada でこの変換を実行する簡単な方法はありますか?
IEEE 754 倍精度形式の数値を表す 64 ビットが与えられた場合、それらを同じ数値を表す 32 ビットに変換するためのアルゴリズムは何ですか?ただし、IEEE 754 単精度形式 (おそらく精度が失われます)。
また、ビットを操作することなく、Ada でこの変換を実行する簡単な方法はありますか?
実際、Ada でこれを行う簡単な方法があります (C で同じことを行う方法と非常によく似ています!):
with Ada.Numerics;
with Ada.Text_IO; use Ada.Text_IO;
procedure Floating_Conversion is
D : constant Long_Float := Ada.Numerics.Pi;
F : Float;
begin
F := Float (D); -- The conversion!
Put_Line ("double:" & Long_Float'Image (D));
Put_Line ("single:" & Float'Image (F));
end Floating_Conversion;