鉴于64位代表IEEE 754双精度格式的数字,将它们转换为32位的算法是什么,它们代表相同的数字,但是采用IEEE 754单精度格式(可能会丢失精度)?
此外,是否有一种简单的方法可以在Ada中执行此转换,而无需操作这些位?
答案 0 :(得分:6)
在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;