如何在 Ada 中将一种类型更改为另一种类型?

How do you Change a type from one to another in Ada?

我对在 Ada 中更改类型感到困惑。特别是接收用户输入,将其存储为字符串,然后将其作为浮点数或整数进行运算。我的目标是根据用户的起点和终点制作 table 的对数,按他们想要的任何值递增。我试过类似的东西: Start := Float'Image(Start);能帮到你,谢谢。

with Ada.Text_IO, Ada.Float_Text_IO, Ada.Numerics.Elementary_Functions;
use  Ada.Text_IO, Ada.Float_Text_IO, Ada.Numerics.Elementary_Functions;

procedure log_table is

   Start, Stop, Increment, temp : Float; 

begin                                           -- Prompt for input
   Put_Line("To print a table of logarithms,");
   Put(" enter the start, stop, and increment values: ");
   Get(Start); Get(Stop); Get(Increment);

   loop 
    exit when (Start > Stop);
    Put("The logarithm of");
    Put(Start);
    Put(" is ");
    Put_Line( log(Start, 10.0) );
    Start := Start + Increment;
   end loop;

end log_table;

所以代码现在可以运行了...我将 post 下面代码的更改部分。我所做的只是将 Put_Line 函数更改为 Put 函数,然后在其后添加一个 New_Line 函数。这为什么有效?据我了解, Put_Line 和 Put 之间的唯一区别是在末尾添加了一个 '\n' 。更好的理解将不胜感激。

   loop 
    exit when (Start > Stop);
    Put("The logarithm of ");
    Put(Start);
    Put(" is ");
    Put( log(Start, 10.0));
    New_Line;
    Start := Start + Increment;
   end loop;

通常,您使用目标类型的名称将其从一种类型转换为另一种类型,就好像它是一个函数名称一样:

 A := Some_Integer_Type (3.41);

但这只适用于兼容类型。数组(例如字符串)和数字类型永远不兼容,因此您很可能正在寻找 LRM 3.5(52).