【发布时间】:2018-02-06 08:57:11
【问题描述】:
以下代码打印出TRUE,这意味着0.0191*0.0191 的计算结果为0.0003,0.0192*0.0192 的计算结果为0.0004。然而:
0.0191*0.0191 = 0.00036481
0.0192*0.0192 = 0.00036864
如果舍入发生在阈值0.00035,则平方根的相应阈值应该是0.0187。
如果我将增量更改为10.0**(-5),情况并非如此。
所以我的问题是“在这种情况下如何进行定点计算的舍入?”
with Ada.Text_IO; use Ada.Text_IO;
procedure Main is
type T is delta 10.0**(-4) range 0.0 .. 10.0;
X1 : T := 0.0191;
X2 : T := 0.0192;
Y : T := 0.0004;
B : Boolean;
begin
B := (X1 * X1 = Y - T'Delta) and (X2 * X2 =Y);
Put_Line(B'Image);
end Main;
【问题讨论】:
-
您是否尝试过查看 Ada 参考手册?我很确定它包含一个解释。
标签: ada fixed-point