2013-08-20 3 views
0

Учитывая 64 бита, которые представляют число в формате двойной точности IEEE 754, каков алгоритм преобразования их в 32 бита, которые представляют одинаковое число, но в формате одиночной точности IEEE 754 (возможно, с потерей точность)?Преобразование из double в single

Кроме того, есть ли простой способ выполнить это преобразование в Ada, без необходимости манипулировать битами?

+0

Этот вопрос содержит описание алгоритма для преобразования двойной -оценка числа до одной точности: http://stackoverflow.com/questions/16737615/how-is-actually-done-floating-point-conversion-double-to-float-or-float-to-doub/ –

ответ

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; 
Смежные вопросы