Ada - 打印持续时间数据类型时如何控制小数位?

Nwq*_*wqp 2 ada

这是我的打印声明:

 timeInMili: duration;

 timeInMili := (finish - start)*1000;

 Put_Line(duration'image(timeInMili));
Run Code Online (Sandbox Code Playgroud)

(乘以1000以从秒开始变为毫秒)

以上产生了很多小数位.有人可以给我看一个如何用一定数量的小数位打印的例子.

Kei*_*son 5

Ada.Text_IO.Fixed_IO是定点类型的通用包,可以更好地控制输出格式而不是'Image属性.

一个例子:

with Ada.Text_IO; use Ada.Text_IO;
procedure Foo is
    package Duration_IO is new Fixed_IO(Duration);
    timeInMili: Duration := 1.0 / 3.0;
begin
    Duration_IO.Put(timeInMili, Fore => 0, Aft => 2);
    New_Line;
end Foo;
Run Code Online (Sandbox Code Playgroud)

输出:

0.33
Run Code Online (Sandbox Code Playgroud)

  • 我喜欢可选的"Fore"和"Aft"参数的航海感觉.直观,简洁,并保持代码shiphape和布里斯托尔时尚.... (3认同)