...当应用于精确参数时,可能不精确的操作
sqrt
应该尽可能产生精确的答案(例如,精确 4 的平方根应该是精确 2)。
(1) 这是否意味着(* 0 2.2)
必须产生0.0
但从不0
作为结果?
但是,这不是必需的。...
(2) 这是否意味着也(/ 4 2)
可能产生2.0作为结果?
(3) 是否有以这种方式提供整数根的实现?一般来说,我如何获得整数平方根的功能?(这里是索引)(请不要递归/迭代实现)
...当应用于精确参数时,可能不精确的操作
sqrt
应该尽可能产生精确的答案(例如,精确 4 的平方根应该是精确 2)。
(1) 这是否意味着(* 0 2.2)
必须产生0.0
但从不0
作为结果?
但是,这不是必需的。...
(2) 这是否意味着也(/ 4 2)
可能产生2.0作为结果?
(3) 是否有以这种方式提供整数根的实现?一般来说,我如何获得整数平方根的功能?(这里是索引)(请不要递归/迭代实现)
R6RS 有exact-integer-sqrt
。它返回两个值,平方根和余数。如果需要,您可以丢弃第二个值。
允许(但不要求)在实现中考虑(* 0 x)
(将任何值乘以一个精确的零)对于任何 x 都是精确的零。请参阅程序的R6RS说明*
。