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