从双重转换为单一

时间:2013-08-20 17:16:25

标签: floating-point double ada ieee-754 bits

鉴于64位代表IEEE 754双精度格式的数字,将它们转换为32位的算法是什么,它们代表相同的数字,但是采用IEEE 754单精度格式(可能会丢失精度)?

此外,是否有一种简单的方法可以在Ada中执行此转换,而无需操作这些位?

1 个答案:

答案 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;