0
給定64位表示IEEE 754雙精度格式的數字,將它們轉換爲32位表示相同數字的算法是什麼,但採用IEEE 754單精度格式(可能丟失精確)?從雙精度轉換爲單精度
此外,有沒有一種簡單的方法可以在Ada中執行這種轉換,而無需操縱位?
給定64位表示IEEE 754雙精度格式的數字,將它們轉換爲32位表示相同數字的算法是什麼,但採用IEEE 754單精度格式(可能丟失精確)?從雙精度轉換爲單精度
此外,有沒有一種簡單的方法可以在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;
這個問題包含算法,可將雙的描述精確數量到單精度:http://stackoverflow.com/questions/16737615/how-is-actually-done-floating-point-conversion-double-to-float-or-float-to-doub/ –