我正在尝试创建一个具有 6 位精度的新浮点类型。但似乎我无法使用它。这是 MyFloat_IO.ads 包中的代码
WITH Ada.Text_IO;
PACKAGE MyFloat_IO IS
TYPE MyFloat IS DIGITS 6 RANGE 0.0..Float'Last;
PACKAGE MyFloat_IO IS NEW Ada.Text_IO.Float_IO(MyFloat);
end MyFloat_IO;
和主要代码:
WITH Ada.Text_IO;
WITH MyFloat_IO;
USE MyFloat_IO;
WITH Ada.Numerics;
PROCEDURE TEST2 IS
X : MyFloat := 3.5;
Y : CONSTANT := Ada.Numerics.Pi;
Z : MyFloat;
BEGIN -- main program
Z := X * Y;
MyFloat_IO.Put(Z);
Ada.Text_IO.New_Line;
END TEST2;
在编译时,我收到错误消息:
14. BEGIN -- main program
15. Z := X * Y;
16. MyFloat_IO.Put(Z);
|
>>> "Put" not declared in "MyFloat_IO"
17. Ada.Text_IO.New_Line;
18. END TEST2;
我究竟做错了什么?
非常感谢...
更新:根据 TED 的建议的新代码:
包 MyFloat_I0.ads :
WITH Ada.Text_IO; PACKAGE MyFloat_I0 IS TYPE Instance IS DIGITS 6 RANGE 0.0..Float'Last; PACKAGE MyFloat IS NEW Ada.Text_IO.Float_IO(Instance); end MyFloat_I0;
和主要代码:
WITH Ada.Text_IO; WITH MyFloat_I0; use MyFloat_I0; WITH Ada.Numerics; PROCEDURE TEST2 IS X : Instance := 3.5; Y : CONSTANT := Ada.Numerics.Pi; Z : Instance; BEGIN -- main program Z := X * Y; MyFloat.Instance.Put(Z); Ada.Text_IO.New_Line; END TEST2;
在编译时我得到:
MyFloat.Instance.Put(Z);
|
>>> "Instance" not declared in "MyFloat"